mysql - Symfony2 子级查询

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

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

最佳答案

您可能可以在比较之前在出发时进行连接,因此:

$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/

相关文章:

php - symfony的测试和浏览器有什么区别

linux - 如何在centos中保存repo文件

mysql - 在 mysql 中查询股票/价格趋势

mysql - 表 A 中表 A 的外键

mysql - 如何过滤掉因某一字段而异的相似记录组

c++ - 当值 >=16 时,ResultSet ->getString() 崩溃

php - 我如何在 symfony Controller 中使用 Kint Debugger

php - 如何获取Symfony2应用程序的根目录?

git - 无法识别“gh”... - 尝试从命令提示符创建 GitHub 存储库时出错

c# - 干净的架构和 ORM 的使用