教义查询+ LIKE表达(Doctrine query + LIKE expression)

2019-09-17 19:52发布

我有问题,创建主义查询与LIKE表达式:

查询:

$dql    = "SELECT u FROM Users u JOIN u.group g WHERE g.name LIKE lower('ADMIN')";
$query  = $em->createQuery($dql);
$result = $query->getResult();

错误:

QueryException: [Syntax Error] line 0, col 147: Error: Expected Doctrine\ORM\Query\Lexer::T_STRING, got 'lower'

LOWER只是一个例子,我需要在LIKE表达式中使用的其他功能,例如,unnacent ...

我怎样才能改变像表达支持双方的功能?

例如: LOWER(unaccent(u.login)) LIKE LOWER(unaccent('ADMIN'))

Answer 1:

类似字符串需要有%符号。 如果你想要的东西,与ADMIN开始,然后,如果你想要的东西,与ADMIN你会写%ADMIN最后,如果你要它包含ADMIN那么这将是ADMIN%结束%你可以这样写ADMIN%。

也许返回一个字符串,您可以使用学说的CONCAT功能,或者您也可以通过PHP做。



Answer 2:

我的QueryBuilder测试这一点,似乎没有成为一个解决方案。 第二个参数不会采取一个函数,所以我会建议身边的切换参数:

$dql    = "SELECT u FROM Users u JOIN u.group g WHERE UPPER(g.name) LIKE 'ADMIN'";


文章来源: Doctrine query + LIKE expression