如果第二个表中没有相关数据,则在不排除第一个表行的情况下获取过滤的相关数据

时间:2013-03-21 13:47:31

标签: php doctrine doctrine-1.2

有两个相关的表,Car和CouponException,我想要获得一系列模型中的所有汽车,并获得与每辆车相关的CouponExceptions,但是棘手的事情来到这里..我只想获得该车的CouponException给予优惠券ID。所以我现在正在尝试的是:

$versions = Doctrine_Query::create()
    ->from('Car c, c.CouponException ce')
    ->whereIn('c.model', $models)
    ->addWhere('ce.coupon_id = ?', $cid)
    ->fetchArray();

但它只返回给我带优惠券例外的汽车,我想要的是将所有汽车都放在模型列表中并获得该汽车的CouponException,如果有一辆给定的优惠券ID ...

1 个答案:

答案 0 :(得分:0)

我必须使用LEFT JOIN来获取所有结果,并使用“with”关键字来过滤第二个表。

    $versions   = Doctrine_Query::create()
                    ->select('c.*, ce.*')
                    ->from('Car c')
                    ->leftJoin('c.CouponException ce WITH ce.coupon_id = '.$cid)
                    ->whereIn('c.model', $models)
                    ->fetchArray();

现在它有效:)))))