我有与之前问过的问题完全相同的问题,但最后一个问题已经有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 语法吗?
没有像
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()
访问的方法.
您还可以使用 QueryBuilder,例如,
$query = $this->dm
->createQueryBuilder('AppBundle:DocumentName')
->field('fieldName')
->notEqual(null);
$data = $query->getQuery()->execute();