Please Ignore,

The time I added the query, I already had added the "ROLE_ADMIN" to all the 
users.
So the query is working fine.

On Monday, January 7, 2019 at 6:49:54 PM UTC+2, Mike eco wrote:
>
> In Symfony 4, I have a field where by typing part of the the username or 
> email and returns users from the database making an AJAX call.
>
> Is working fine except I do not need users that have role ADMIN. So I 
> changed the query adding the 'u.roles NOT KIKE :role' and returns no 
> results.
>
> If I remove the 2 following lines :
>
>         ->andWhere('u.roles NOT LIKE :role')
>         ->setParameter('role', '%ADMIN%')
>
> the query is working fine.
>
> Here is the query :
>
>     return $this->createQueryBuilder('u')
>             ->andWhere('u.email LIKE :query OR u.username LIKE :query ')
>             ->andWhere('u.roles NOT LIKE :role')
>             ->setParameter('query', '%'.$query.'%')
>             ->setParameter('role', '%ADMIN%')
>             ->setMaxResults($limit)
>             ->getQuery()
>             ->getResult();
>
> I dump at least one object from the database that should be matched :
>
>   'id' => string '8' (length=1)
>   'username' => string 'mike' (length=4)
>   'email' => string '[email protected]' (length=7)
>   'roles' => string '["ROLE_ADMIN","ROLE_USER"]' (length=26)
>
> In the profiler I check the executed query :
>
>
> SELECT u0_.id AS id_0, u0_.username AS username_1, u0_.email AS email_2, 
>> u0_.roles AS roles_3, u0_.password AS password_4, u0_.name AS name_5 FROM 
>> user u0_ WHERE (u0_.email LIKE '%mik%' OR u0_.username LIKE '%mik%') AND 
>> u0_.roles NOT LIKE '%ADMIN%' LIMIT 5;
>
>
> I expect at least 1 result which corresponds to the provided row in my 
> database but nothing is returned and I cannot figure out what is wrong with 
> the query.
>
> I also tried other ways to query, like using expr()->notLike() but with 
> the same results
>         $qb = $this->createQueryBuilder('u');
>         $users = $qb
>                 ->andWhere('u.email LIKE :query OR u.username LIKE :query'
> )
>                 ->setParameter('query', '%'.$query.'%')
>                 ->andWhere( 
>                         $qb->expr()->notLike('u.roles', $qb->expr()->
> literal('%ADMIN%'))
>                         )
>                 ->setMaxResults($limit)
>                 ->getQuery()
>                 ->getResult();
>         
>         return $users;
>
> So Is it the query or something else is wrong ?
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"doctrine-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/doctrine-user.
For more options, visit https://groups.google.com/d/optout.

Reply via email to