How to query NOT NULL with Doctrine?

65,541

Solution 1

Try this:

$this->createQuery('u')
     ->where('name IS NOT NULL')
     ->execute();

which is standard SQL syntax. Doctrine doesn't convert Null values into proper sql.

Solution 2

Do it in Doctrine way, from query builder and Expr class.

 $qb = $entityManager->createQueryBuilder();
 $result = $qb->select('t')
        ->from('Test','t')
        ->where($qb->expr()->isNotNull('t.name'))
        ->groupBy('t.name')
        ->getQuery()
        ->getResult();

there are also distinct() function.

Solution 3

Or just use Doctrine filter:

$filters[] = new Filter('name', null, 'notEqual');

Then

$list = $this->get(yourDBinstance)
        ->setDocIdentifier('TestBundle:Test')
        ->setFilters($filters)
        ->list();
Share:
65,541
Michael Fidy
Author by

Michael Fidy

Updated on November 19, 2021

Comments

  • Michael Fidy
    Michael Fidy over 2 years

    I have table Test:

    Test:
    id | name 
    1  | aaa
    2  | 
    3  | ccc
    4  | aaa
    5  | 
    6  | ddd
    

    I want result where name is NOT NULL:

    aaa
    ccc
    aaa
    ddd
    

    How can i get with:

    Doctrine_Core::getTable('Test')->findBy('name', NOTNULL??) <-doesnt working
    

    and in model with:

    $this->createQuery('u')
         ->where('name = ?', NOTNULL ???) <- doesnt working
         ->execute();