如何使用 Doctrine 2 查询 NOT NULL?

use*_*421 3 php doctrine-orm

我有与之前问的完全相同的问题,但最后一个问题是 6 岁,并且存在新的 Doctrine 版本,所以我现在参考最新版本的 Doctrine 提出这个问题。

我有表测试:

测试:

id | name 
1  | aaa
2  | 
3  | ccc
4  | aaa
5  | 
6  | ddd
Run Code Online (Sandbox Code Playgroud)

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

aaa
ccc
aaa
ddd
Run Code Online (Sandbox Code Playgroud)

此语法不起作用:

$em->getRepository('Test')->findBy(array('name' => notnull));
Run Code Online (Sandbox Code Playgroud)

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

lxg*_*lxg 5

没有像 那样的快捷方法findBy,但您可以使用查询构建器:

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

这将为您提供所有实体namenot NULL

有关所有查询构建器方法的参考,请参阅http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html,包括可通过 访问的方法$qb->expr()