假设我有一个涉及Person
实体和Position
实体的多对一关系。外键存在于Person
实体上。我想编写一个查询,将结果限制为特定职位的人员,而无需将Position
关联加入查询或加载职位实体。
$qb = $em->createQueryBuilder()
->select('Person')
->from('AcmeBundle:Person', 'Person')
->where('Person.position_id = :position_id')
->setParameter('position_id', 1)
;
这不起作用,因为position_id
实体上没有Person
属性。相反,我必须首先加入Position
关联并执行此操作:
$qb = $em->createQueryBuilder()
->select('Person')
->from('AcmeBundle:Person', 'Person')
->join('Person.position', 'Position')
->where('Position.id = :position_id')
->setParameter('position_id', 1)
;
或者这个:
$qb = $em->createQueryBuilder()
->select('Person')
->from('AcmeBundle:Person', 'Person')
->where('Person.position = :position')
->setParameter('position', $loaded_position_object)
;
是否可以通过位置ID限制我的查询,而不是(1)加入位置关联或(2)加载完整位置对象?
答案 0 :(得分:1)
而不是这个
...
->where('Person.position_id = :position_id')
...
你应该这样做
...
->where('Person.position = :position_id')
...