我必须做一些查询,而我正在尝试不同的方式,我发现下一行不是被学说“识别”(它会给出错误):
例如,当我想比较db中的某些数据是否等于文字时,这里是条件:
('u.gender = M')
这就是我的表格的样子:
id gender
1 M
2 M
3 F
它抛出了语义错误。同样在比较日期的时候。
我想知道为什么这不被学说所认可,而直接与数字比较则被接受:
条件:('u.age = 15')
答案 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'");