如何用教义2查询NOT NULL?

问题描述 投票:0回答:2

我有与之前问过的问题完全相同的问题,但最后一个问题已经有6年历史了,并且存在新的Doctrine版本,所以我现在参考最新版本的Doctrine来问这个问题。

我有桌子测试:

测试:

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

我想要名称不为空的结果:

aaa
ccc
aaa
ddd

此语法不起作用:

$em->getRepository('Test')->findBy(array('name' => notnull));

有类似的东西可以使用 findBy 语法吗?

php doctrine-orm
2个回答
11
投票

没有像

findBy
这样的快捷方法,但您可以使用查询生成器:

$qb = $em->createQueryBuilder(); // $em is your entity manager
$result = $qb->select("t")
    ->from("Test t")
    ->where($qb->expr()->isNotNull("t.name"))
    ->getQuery()->getResult();

这将为您提供

name
不是
NULL
的所有实体。

请参阅 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html 以获取所有查询生成器方法的参考,包括通过

$qb->expr()
访问的方法.


3
投票

您还可以使用 QueryBuilder,例如,

$query = $this->dm
              ->createQueryBuilder('AppBundle:DocumentName')
              ->field('fieldName')
              ->notEqual(null);

$data = $query->getQuery()->execute();
© www.soinside.com 2019 - 2024. All rights reserved.