为什么这在学说中是不可能的

时间:2013-11-04 19:26:52

标签: codeigniter doctrine-orm doctrine doctrine-query

我必须做一些查询,而我正在尝试不同的方式,我发现下一行不是被学说“识别”(它会给出错误):

例如,当我想比较db中的某些数据是否等于文字时,这里是条件:

('u.gender = M')

这就是我的表格的样子:

id  gender
 1     M
 2     M
 3     F

它抛出了语义错误。同样在比较日期的时候。

我想知道为什么这不被学说所认可,而直接与数字比较则被接受:

条件:('u.age = 15')

2 个答案:

答案 0 :(得分:3)

你可以这样做的第一个选择 -

 $M = 'M';
 $age = 15;
 $query = $this->createQueryBuilder('t')
                ->where('u.gender = :M AND u.age = :age')
                ->setParameters(array('M'=> $M,'age'=>$age);

另一种方法 -

$query = $this->createQueryBuilder("t")
              ->where("u.gender = 'M' AND u.age = 15");

答案 1 :(得分:0)

所以我想我的问题的答案是它不起作用,因为学说不认识M是一个字符串。这就是为什么有必要使用像@Mehedi这样的引号。

另一种解决方法是使用查询构建器:

    $v = 'M';
    $condition = $this->qb->expr()->eq('u.gender', $this->qb->expr()->literal($v));

但我想这只是漫长而难以阅读。所以最简单的事情就是:

    $condition = ("u.gender = 'M'");