tomassilny
tomassilny

Reputation: 1121

Symfony Doctrine - select users with specific role

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

Answers (2)

Nokser
Nokser

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

Adil
Adil

Reputation: 150

Remove double quotes

->setParameter('role', '%ROLE_ADMIN%')

Upvotes: 0

Related Questions