你好,我通过ManyToOne双向关系在symfony join中有两个表。 文章和日期。
在我的表格(日期)中,我有:
+----------------------------
| id | a.id | OK OR NOT ?
+----------------------------
| 1 | 4 | OK
| 2 | 4 | OK
| 3 | 6 | OK
| 4 | 5 | OK
| 5 | 4 | **NOTOK**
----------------------------
$qb = $this->createQueryBuilder('a')
->select('a')
->leftJoin('a.dates','d')
->where('CONDITION OK OR NOT')
->orderBy('a.id', 'ASC');
return $qb->getQuery()->getResult();
我怎样才能得到除a.id:4以外的所有文章,因为其中一篇文章没有对条件作出反应???
答案 0 :(得分:0)
你应该使用 - > notIn():
$qb = $this->createQueryBuilder('a')
->where($qb->expr()->notIn('a.id','SELECT a.id FROM AppBundle:Articles LEFT JOIN a.dates d WHERE d.OK_OR_NOT = "**NOTOK**"'))
->orderBy('a.id', 'ASC');
return $qb->getQuery()->getResult();
http://www.doctrine-project.org/api/orm/2.5/source-class-Doctrine.ORM.Query.Expr.html#427-444