2012-05-10 28 views

回答

5

弗朗西斯的回答是正確的。這完全取決於您是否願意使用表達式構建器或高級解決方案。

對於您的特殊情況,您可以選擇其中一種。

表達式生成器:

$queryBuilder = $this->_em->createQueryBuilder(); 
$expr = $queryBuilder->expr(); 

$query = $queryBuilder 
    ->select('a') 
    ->from('entity', 'a') 
    ->where($expr->neq('a.deleted', 1)) 
    ->getQuery(); 

對於高層次的解決方案看Rawkode的答案。除了將!=更改爲<>或使用a.deleted = 0

更重要的是

->where('a.deleted = :deleted') 
->setParameter('deleted', false); 
1
$query = $this->_em->createQueryBuilder() 
->select('a') 
->from('entity', 'a') 
->where('a.deleted != 1') /// how do you write NOT??? i've tried <> etc 
->getQuery(); 

'!=' 表示不相等

+1

我已經改變了我的代碼使用將與學說被參數化這個!=,它不返回任何結果都現在,被刪除的字段是一個INT,字段值被設置直到記錄被刪除,然後該字段設置爲1,因此我想返回不等於1的每個記錄。 –

1

!=表示不等於 !===裝置不相同的

+0

我已更改我的代碼以使用!=並且它現在不會返回任何結果,刪除的字段是一個INT,字段值被設置爲null,直到記錄被刪除,那麼字段設置爲1,因此我想返回不等於1的每個記錄。 –

1
$queryBuilder = $repository->createQueryBuilder('a'); 
$query = $queryBuilder 
    ->where($queryBuilder->expr()->notIn('u.id', 1) 
    ->getQuery(); 

我不確定在查詢構建中不相等的運算符。但是,這可能會幫助你。順便說一句,我也在尋找更好的答案。

2

只需使用NEQ()像在下面的例子:

$query = $repository->createQueryBuilder('t'); 
$expr = $query->expr(); 
$orx = $expr->orX(); 

$orx->add($expr->neq('t.pageTitle', $expr->literal('value1'))); 
$orx->add($expr->neq('t.metaDescription', $expr->literal('value2'))); 

$query->andWhere($orx); 

以上代碼生成:

AND (
    t1_.page_title <> 'value1' 
    OR t1_.meta_description <> 'value2' 
) 
相關問題