我有两个文档Car
和Driver
/**
* @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();
但即使数据库中存在NULL
和Car
,上一代码也会返回Driver
我发现similar question我想知道这个缺点是否可以通过其他方式解决
答案 0 :(得分:0)
试试这个
$car = $dm
->getRepository('Car')
->createQueryBuilder()
->where('driver.name =?1')
->setParameter(1, 'Peter')
->getQuery()->getSingleResult();
编辑:
如果司机彼得有多辆汽车,你应该使用
->getOneOrNullResult()
代替getSingleResult()