web-dev-qa-db-ja.com

DoctrineでNOT NULLをクエリする方法は?

私はテーブルテストがあります:

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

名前がNULLではない結果が欲しい:

aaa
ccc
aaa
ddd

どうすれば取得できますか:

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

とモデルで:

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

これを試して:

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

これは標準SQL構文です。 Doctrineは、Null値を適切なSQLに変換しません。

34
Dziamid

Doctrineの方法で、クエリビルダーとExprクラスから実行します。

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

また、distinct()関数もあります。

5