我正在尝试从搜索表单中获取航班列表。用户选择一个城市,一些乘客,我的查询将返回所有可用的航班。
我试过这个:
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关系的城市相关联)
如何更改查询以便我可以访问机场城市?
答案 0 :(得分:0)
你可以在比赛前离开时加入,所以:
$qb->join('a.departure', 'd')
然后代替a.departure
,你只需做d
,例如
->andWhere('d.city = :city')
我不理解的部分是a.departure > :min
条款,你在比较哪一个离境实体的字段?或者离开一个领域?在这种情况下,a.departure.city = :city
没有意义。
无论如何,DQL documentation on joins是一个很好的参考来源。