1

我在 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

任何想法?

4

3 回答 3

2

您应该使用绑定参数,而不是直接将“$ced”放入 where 语句中。将您的 where 语句更改为:

 $dql->where('u.ced = :ced')->setParameter('ced', $ced);

否则,不仅生成的 {D/S}QL 会失效,而且容易受到注入攻击。

于 2012-06-26T01:29:43.467 回答
0

嗯,如果错误仍然存​​在,您可以按照教义 2.1 文档中所述的方式尝试:

$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;
于 2012-06-26T01:18:27.650 回答
0

我真的很傻。

解决方案是:

$dql->select('um', 'u', 'r')
                ->from('AcmeComBundle:UserMenu', 'um')
                ->join('um.user', 'u')
                ->join('u.role', 'r')
                ->where("u.ced = '".$ced."'");

谢谢你们的回答。

于 2012-06-26T01:55:39.413 回答