【发布时间】:2012-02-26 23:24:25
【问题描述】:
如果我在不使用 queryBuilder 的情况下使用此 dql 进行查询
$query = $this->_em
->createQuery("SELECT p, g, c
FROM LikeYeah\GoBundle\Entity\Product p
JOIN p.garments g
LEFT JOIN g.colours c
ORDER BY p.id DESC
");
一切都很好,但是如果我使用(我相信是一样的)这样的查询生成器查询槽
$qb->select('p, g, c')
->from('LikeYeah\GoBundle\Entity\Product', 'p')
->join('p.garments', 'g')
->leftJoin('g.colours', 'c')
->orderBy('p.id', 'desc');
我收到以下错误:
“语义错误] line 0, col 66 near '.colours c, LikeYeah\GoBundle\Entity\Product':错误:标识变量 g 用于连接路径表达式,但之前未定义。”
我错过了什么?
【问题讨论】:
-
我在文档中看不到“join”,只有“leftJoin”和“innerJoin”。也许问题是你的“加入”实际上是一个leftJoin,对于某些行它没有定义“g”,因为没有什么可以加入......
-
Wojciech,不是这样,QueryBuilder 有一个名为
join()的方法,基本上是innerJoin()的别名。
标签: php symfony doctrine-orm dql