如何使用Doctrine查询NOT NULL?

Mic*_*idy 16 php doctrine symfony1 symfony-1.4 doctrine-1.2

我有桌子测试:

Test:
id | name 
1  | aaa
2  | 
3  | ccc
4  | aaa
5  | 
6  | ddd
Run Code Online (Sandbox Code Playgroud)

我想要名称为NOT NULL的结果:

aaa
ccc
aaa
ddd
Run Code Online (Sandbox Code Playgroud)

我怎么能得到:

Doctrine_Core::getTable('Test')->findBy('name', NOTNULL??) <-doesnt working
Run Code Online (Sandbox Code Playgroud)

在模型中:

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

Dzi*_*mid 35

试试这个:

$this->createQuery('u')
     ->where('name IS NOT NULL')
     ->execute();
Run Code Online (Sandbox Code Playgroud)

这是标准的SQL语法.Doctrine不会将Null值转换为正确的sql.

  • 谢谢,我如何使用findby? (3认同)

Osh*_*uma 6

从查询构建器和Expr类以Doctrine方式进行操作。

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

也有distinct()函数。