我必须做一些查询,当我尝试不同的方式时,我发现下一行没有被学说“识别”(它给出错误):
例如,当我想比较数据库中的某些数据是否等于文字时,这里的条件是:
('u.gender = M')
这就是我的桌子的样子:
id gender
1 M
2 M
3 F
它会引发语义错误。同样在以这种方式比较日期时。
我想知道为什么教义不承认这一点,而直接与数字进行比较是可以接受的:
健康)状况:('u.age = 15')
我必须做一些查询,当我尝试不同的方式时,我发现下一行没有被学说“识别”(它给出错误):
例如,当我想比较数据库中的某些数据是否等于文字时,这里的条件是:
('u.gender = M')
这就是我的桌子的样子:
id gender
1 M
2 M
3 F
它会引发语义错误。同样在以这种方式比较日期时。
我想知道为什么教义不承认这一点,而直接与数字进行比较是可以接受的:
健康)状况:('u.age = 15')
第一个选项你可以这样做 -
$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");
所以我想我的问题的答案是它不起作用,因为教义没有将 M 识别为字符串。这就是为什么有必要像@Mehedi 所说的那样使用引号。
解决此问题的另一种方法是使用查询生成器:
$v = 'M';
$condition = $this->qb->expr()->eq('u.gender', $this->qb->expr()->literal($v));
但我想这很长而且难以阅读。所以最短的事情就是:
$condition = ("u.gender = 'M'");