Symfony2 sublevel查询

时间:2015-09-30 08:39:38

标签: mysql symfony repository

我正在尝试从搜索表单中获取航班列表。用户选择一个城市,一些乘客,我的查询将返回所有可用的航班。

我试过这个:

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关系的城市相关联)

如何更改查询以便我可以访问机场城市?

1 个答案:

答案 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是一个很好的参考来源。