Reputation: 1121
I am trying to select users from SQLite database (Doctrine) but I just want to select teachers with ROLE_ADMIN and it doesn't works, I get error.
Here is query code:
$teachers = $em->createQueryBuilder()
->select('t.username, t.firstName as firstname, t.surname, t.email, t.id')
->from('App:User\User', 't')
->where('t.roles LIKE :role')
->setParameter('role', '%"ROLE_ADMIN"%')
->getQuery()
->getResult();
And I get this error:
[Semantical Error] line 0, col 99 near 'roles LIKE :': Error: Invalid PathExpression. Must be a StateFieldPathExpression.
Can you help please?
Upvotes: 0
Views: 1000
Reputation: 56
Check this (example for many roles):
$roles = ['ROLE_ADMIN'];
$qb = $this->createQueryBuilder('u');
// ...
$orStatements = $qb->expr()->orX();
foreach ($roles as $role) {
$orStatements->add(
$qb->expr()
->like('u.roles', $qb->expr()
->literal('%"' . $role . '"%'))
);
}
$qb->andWhere($orStatements);
$users = $qb->getQuery()->getResult();
Upvotes: 2