DQL returns 0 预期结果,其中 MySQL 有 2

DQL returns 0 expected result where MySQL has 2

我的用户存储库上有一个学说查询 (DQL),当我使用类似时 returns 0 结果:

$qb = $this->createQueryBuilder('q');
$qb->select('q.id, q.roles');
$qb->andWhere($qb->expr()->like('q.roles', ':role1'));
$qb->setParameter('role1', '"%ROLE_ADMIN%"');
return $qb->getQuery()->getResult();

而如果我在 MySQL 上手动执行查询,我有 2 个结果

SELECT * FROM user u WHERE u.roles LIKE "%ROLE_ADMIN%"

我有 2 个用户有“ROLE_ADMIN”

不明白

我清除了缓存

我尝试查询 returns 所有用户,结果有效,2 ROLE_ADMIN 都在其中

您不应在 ::setParameter() 调用中使用双引号,因为它们会被解释为搜索表达式的一部分。仅使用一对引号。

$qb->setParameter('role1', '%ROLE_ADMIN%');