我在Doctrine2中有以下查询。
$dql->select('um', 'u', 'r')
->from('AcmeComBundle:UserMenu', 'um')
->join('um.user', 'u')
->join('u.role', 'r')
->where('u.ced = '.$ced);
总是遇到问题:
[Semantical Error] line 0, col 116 near 'XXXXX': Error: 'XXXXX' is not defined.
XXXXX
来自$ced
。
有什么想法吗?
答案 0 :(得分:2)
你应该使用绑定参数,而不是直接将“$ ced”放入where语句中。将你的where语句更改为:
$dql->where('u.ced = :ced')->setParameter('ced', $ced);
否则,生成的{D / S} QL不仅会失效,而且还容易受到注入攻击。
答案 1 :(得分:0)
如果错误仍然存在,您可以通过doctrine 2.1 docs中记录的方式尝试:
$em = $this->getEntityManager;
$qb = $em->createQueryBuilder;
$qb->select(array('um', 'u', 'r'))
->from('Sdz\BlogBundle\Entity\Article', 'a')
->leftJoin('um.user', 'u')
->leftJoin('u.role', 'r')
->where('u.ced = '.$ced);
$query = $qb->getQuery();
$results = $query->getResult();
return $results;
答案 2 :(得分:0)
我真的很蠢。
解决方案是:
$dql->select('um', 'u', 'r')
->from('AcmeComBundle:UserMenu', 'um')
->join('um.user', 'u')
->join('u.role', 'r')
->where("u.ced = '".$ced."'");
谢谢你的回答。