【发布时间】:2014-12-09 12:19:58
【问题描述】:
我在 DB 中有两个具有 OneToMany 关系的表。在“EntityRepository”中使用“createQueryBuilder()”方法,我尝试选择一些有条件的对象。有我的方法:
$query = $this->getEntityManager()->createQueryBuilder();
$query->select("parent")
->from('TestAppBundle:Parent', 'parent')
->leftJoin("parent.children", 'child', 'WITH', 'child.IdP = parent.id')
->where('child.date < :date')
->andWhere('child.status = :null')
->setParameter('date', new DateTime())
->setParameter('null', 0);
而且效果几乎很好。我在 ArrayCollections 中得到带有子对象的父对象。方法选择具有条件的父对象,但问题是我也得到不保持条件的子对象。 我只想获得保持条件的父对象和也保持条件的子对象。此时必须在查询后过滤结果并手动删除子对象。 我希望你能理解这个问题:)
【问题讨论】:
-
被选中的孩子不满足什么条件?
-
孩子有即字段名称“状态”。该字段可以为真或假。我只想选择这个孩子的状态为假的父母。它工作正常,从即 8000 行我得到 100 个父对象,但是当我想看到孩子时,我得到状态为真的孩子和状态为假的孩子。我必须删除查询后状态为 true 的子对象。
标签: php symfony doctrine-orm relational-database