2011-09-05 104 views
11

我有表測試:如何使用Doctrine查詢NOT NULL?

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

我想要的結果,其中名稱爲NOT NULL:

aaa 
ccc 
aaa 
ddd 

如何我可以得到:

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

,並在模型:

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

回答

27

試試這個:

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

這是標準的SQL語法。 Doctrine不會將Null值轉換爲正確的sql。

+3

謝謝,我怎樣才能用這個與findby? –

+1

您不能,您需要編寫自己的自定義方法。 – Dziamid

2

以查詢構建器和Expr類的Doctrine方式進行操作。

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

還有distinct()函數。