我和asked before有完全相同的问题,但最后一个问题是6岁,并且存在新的Doctrine版本,所以我现在要求参考最新版本的Doctrine。
我有桌子测试:
测试:
id | name
1 | aaa
2 |
3 | ccc
4 | aaa
5 |
6 | ddd
我想要名称为NOT NULL的结果:
aaa
ccc
aaa
ddd
这种语法不起作用:
$em->getRepository('Test')->findBy(array('name' => notnull));
是否有类似的东西可以使用findBy语法?
答案 0 :(得分:2)
没有像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()
访问的方法。
答案 1 :(得分:0)
您也可以像使用QueryBuilder
$query=$this->dm->createQueryBuilder('AppBundle:DocumentName')
->field('fieldName')->notEqual(null);
$ data = $ query-> getQuery()-> execute();
答案 2 :(得分:-1)
我遇到了同样的问题。
免责声明:找不到关于我的答案的任何文献资料,但对我而言有效。
尝试$this->repository->findBy(['active' => !NULL || !0])
-
在我的情况下,“活动”可以为NULL,我需要跳过NULL或0值。