【问题标题】:Symfony2 sublevel querySymfony2 子级查询
【发布时间】:2015-09-30 08:39:37
【问题描述】:

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

我试过这个:

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

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

【问题讨论】:

    标签: mysql symfony repository


    【解决方案1】:

    您可能会在比较之前在出发时加入,所以:

    $qb->join('a.departure', 'd')
    

    然后你只需要d 而不是a.departure,例如

    ->andWhere('d.city = :city')
    

    我不明白的部分是a.departure > :min 子句,您要与出发实体上的哪个字段进行比较?或者离开是一个领域?在这种情况下,a.departure.city = :city 没有意义。

    无论如何,DQL documentation on joins 是一个很好的参考来源。

    【讨论】:

    • 这太棒了。答案和文档。
    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多