2012-05-10 24 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' 
) 
相关问题