我正在尝试从搜索表单中获取航类列表。用户选择一个城市、一些乘客,我的查询返回所有可用的航类。
我尝试过这个:
public function findSearch($city, $nbpax)
{
$qb = $this->createQueryBuilder('a');
$qb->where('a.precisedate >= :now')
->setParameter('now', new \DateTime())
->andWhere('a.available > :min')
->setParameter('min', $nbpax)
->andWhere('a.departure > :min')
->setParameter('min', $nbpax)
->andWhere('a.departure.city = :city')
->setParameter('city', $city)
->orderBy('a.precisedate', 'ASC')
;
return $qb
->getQuery()
->getResult()
;
}
但似乎 a.departure.city 未被识别为有效比较(出发地是机场,与具有 OneToMany 关系的城市相关联)
如何更改我的查询以便可以访问机场城市?
最佳答案
您可能可以在比较之前在出发时进行连接,因此:
$qb->join('a.departure', 'd')
然后,您只需执行 d
,而不是 a.departure
,例如
->andWhere('d.city = :city')
我不明白的部分是 a.departure > :min
子句,您要与出发实体上的哪个字段进行比较?或者出发是一个场域?在这种情况下,a.departure.city = :city
没有意义。
无论如何,DQL documentation on joins是一个很好的引用来源。
关于mysql - Symfony2 子级查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32861588/