2

I have problems to create a Doctrine Query with LIKE Expression:

QUERY:

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

ERROR:

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

LOWER was just an example, I need to use other functions in LIKE EXPRESSION, for example, unnacent...

How can I change Like Expression to support function on both sides?

Example: LOWER(unaccent(u.login)) LIKE LOWER(unaccent('ADMIN'))

4

2 回答 2

3

like 字符串需要有 % 符号。如果你想要以 ADMIN 开头的东西,那么你会写 ADMIN%,如果你想要以 ADMIN 结尾的东西,你会写 %ADMIN,最后如果你想要它包含 ADMIN,那么它将是 %ADMIN%。

也许要返回一个字符串,您可以使用学说的 CONCAT 函数,也可以通过 PHP 来完成。

于 2012-11-08T07:13:12.637 回答
0

我用 QueryBuilder 对此进行了测试,似乎没有解决方案。第二个参数不会带函数,所以我建议切换参数:

$dql    = "SELECT u FROM Users u JOIN u.group g WHERE UPPER(g.name) LIKE 'ADMIN'";
于 2012-07-20T15:19:41.510 回答