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%');
我的用户存储库上有一个学说查询 (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%');