查询参考文档ODM Doctrine2

时间:2013-12-06 18:06:53

标签: php mongodb symfony doctrine-orm

我有两个文档CarDriver

/**
* @ODM\Document(collection="cars")
*/
class Car { 
    /**
     * @ODM\Id
     */
    protected $id;

    /**
     * @ODM\ReferenceOne(targetDocument="Driver")
     */
    protected $driver;

    //...
}

/**
* @ODM\Document(collection="drivers")
*/
class Driver { 
    /**
     * @ODM\Id
     */
    protected $id;

    /**
     * @ODM\String
     * @Assert\NotBlank()
     */
    protected $name;

    //...
}

我想要一辆由彼得"

驾驶的汽车
$car = $dm
  ->getRepository('Car')
  ->createQueryBuilder()
  ->field('driver.name')->equals("Peter")
  ->getQuery()->getSingleResult();

但即使数据库中存在NULLCar,上一代码也会返回Driver

我发现similar question我想知道这个缺点是否可以通过其他方式解决

1 个答案:

答案 0 :(得分:0)

试试这个

$car = $dm
->getRepository('Car')
->createQueryBuilder()
->where('driver.name =?1')
->setParameter(1, 'Peter')
->getQuery()->getSingleResult();

编辑:

如果司机彼得有多辆汽车,你应该使用 ->getOneOrNullResult()代替getSingleResult()