Search code examples
symfonydoctrinesymfony4

Doctrine findBy type="json"


Can I query db by roles?

In database i have column roles type json and store data like this ["ROLE_ADMIN"]

How can i query via doctrine? I use this code down and don't work.

$user = $this->getDoctrine()
            ->getRepository(User::class)
            ->findBy(['roles' => 'ROLE_ADMIN');

Solution

  • In your UserRepository create a method which uses a like statement to find a user by role. Like this for example:

    class UserRepository extends EntityRepository
    {
        public function findUsersByRole($role)
        {
            $qb = $this->createQueryBuilder('u');
            $qb->select('u')
                ->where('u.roles LIKE :roles')
                ->setParameter('roles', '%"'.$role.'"%');
    
            return $qb->getQuery()->getResult();
        }
    }