我希望有人可以帮助我,我正在我的存储库中编写自定义查询,我想要执行以下操作: -
$query = $this->_em->createQueryBuilder()
->select('a')
->from('entity', 'a')
->where('a.deleted not 1') /// how do you write NOT??? i've tried <> etc
->getQuery();
我如何执行上述操作?
由于
安德鲁
答案 0 :(得分:7)
Francesco的回答是正确的。这完全取决于您使用表达式构建器或高级解决方案的意愿。
对于您的特定情况,您可以选择其中之一。
表达式构建器:
$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
。
更好的是用Doctrine
进行参数化->where('a.deleted = :deleted')
->setParameter('deleted', false);
答案 1 :(得分: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'
)
答案 2 :(得分:1)
$query = $this->_em->createQueryBuilder()
->select('a')
->from('entity', 'a')
->where('a.deleted != 1') /// how do you write NOT??? i've tried <> etc
->getQuery();
'!='表示不相等
答案 3 :(得分:1)
!=表示不等于 !===表示与
不同答案 4 :(得分:1)
$queryBuilder = $repository->createQueryBuilder('a');
$query = $queryBuilder
->where($queryBuilder->expr()->notIn('u.id', 1)
->getQuery();
我不确定在查询构建中不等于运算符。但是,这可能会对你有所帮助。 顺便说一下,我也在寻找更好的答案。