如果我在没有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');
我收到以下错误:
“语义错误”第0行,第66行靠近'.colours c,LikeYeah \ GoBundle \ Entity \ Product':错误:识别变量g在连接路径表达式中使用但之前未定义过。“
我错过了什么?
答案 0 :(得分:3)
试试这个:在你加入后使用addSelect:
$qb->select('p')
->join('p.garments', 'g')
->addSelect('g')
->from('LikeYeah\GoBundle\Entity\Product', 'p')
->join('p.garments', 'g')
->leftJoin('g.colours', 'c')
->addSelect('c')
->orderBy('p.id', 'desc');
答案 1 :(得分:0)
你可以从这个方法中获得帮助
public function findSampleClothingTypeGender($gender) {
$query = $this->getEntityManager()
->createQuery('
SELECT p FROM Acme:Product p
JOIN p.clothing_type ct
WHERE p.gender = :gender'
)->setParameter('gender', $gender);
try {
return $query->getResult();
} catch (\Doctrine\ORM\NoResultException $e) {
return null;
}
}
答案 2 :(得分:0)
尝试以下一项
$qb->select('p','g','c')
->from(array('LikeYeah\GoBundle\Entity\Product','p'))
->join(array('p.garments','g'))
->join(array('g.colours','c'),'LEFT')
->order_by('p.id','DESC');
答案 3 :(得分:-1)
可能会尝试
$qb->select('p, g, c')
->from('GoBundle:Product', 'p')
->join('p.garments', 'g')
->leftJoin('g.colours', 'c')
->orderBy('p.id', 'desc');
显示你的$ qb init和DQL结果
答案 4 :(得分:-1)
它对我有用。
$this->_em->createQueryBuilder()
->select('fu,e,t')
->from('\xxxx\AdminBundle\Entity\FrontUser','fu')
->join('fu.read_essays','e')
->leftJoin('e.tags','t')
->getQuery()->execute();
我认为你应该创建一个新的QueryBuilder对象。
您可以使用以下代码查看该QueryBuilder的Dql
$ QB-> getDQL();