2

我必须做一些查询,当我尝试不同的方式时,我发现下一行没有被学说“识别”(它给出错误):

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

('u.gender = M')

这就是我的桌子的样子:

id  gender
 1     M
 2     M
 3     F

它会引发语义错误。同样在以这种方式比较日期时。

我想知道为什么教义不承认这一点,而直接与数字进行比较是可以接受的:

健康)状况:('u.age = 15')

4

2 回答 2

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");
于 2013-11-05T08:22:25.070 回答
0

所以我想我的问题的答案是它不起作用,因为教义没有将 M 识别为字符串。这就是为什么有必要像@Mehedi 所说的那样使用引号。

解决此问题的另一种方法是使用查询生成器:

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

但我想这很长而且难以阅读。所以最短的事情就是:

    $condition = ("u.gender = 'M'");
于 2013-11-05T18:42:46.173 回答