Symfony 选择没有子项的实体
我有一个包含报价和发票实体的DB表。我将它们保存在同一个表中,因为在项目中,报价和发票是同一种数据,报价在发票之前。我们可以从报价单生成发票,发票将收到与其父报价单相同的数据。所以我有一个字段parent\u id,自引用他的父项。我可以从type字段判断表行是发票还是报价单。1=发票,2=报价单 现在我想提取有chilg发票的报价,以及没有子发票的报价。 为了有一个孩子,我做了以下几件事,而且效果很好:Symfony 选择没有子项的实体,symfony,doctrine-orm,entity,entity-relationship,Symfony,Doctrine Orm,Entity,Entity Relationship,我有一个包含报价和发票实体的DB表。我将它们保存在同一个表中,因为在项目中,报价和发票是同一种数据,报价在发票之前。我们可以从报价单生成发票,发票将收到与其父报价单相同的数据。所以我有一个字段parent\u id,自引用他的父项。我可以从type字段判断表行是发票还是报价单。1=发票,2=报价单 现在我想提取有chilg发票的报价,以及没有子发票的报价。 为了有一个孩子,我做了以下几件事,而且效果很好: $query = $this->createQueryBuilder('i')
$query = $this->createQueryBuilder('i')
->select('COUNT(q.id) AS number')
->join('i.parent', 'q')
->where('q.user = :user')
->setParameter('user', $user)
->andWhere('q.statut > :statut_draft')
->setParameter('statut_draft', 0)
->andWhere('q.type = :type')
->setParameter('type', 2)
;
但我不知道如何选择没有孩子的引语。有点
SELECT COUNT(q.id) FROM Table WHERE q.id NOT IN (SELECT i.parent_id FROM Table WHERE type = 1)
?
没有子查询就无法做到这一点?原则允许您使用子查询。试试这个
$query = $this->createQueryBuilder('i')
->select('COUNT(q.id) AS number')
->where('q.user = :user')
->andWhere('NOT EXISTS (SELECT 1 FROM MyEntity q2
WHERE q2.type = 1 AND q2.parent = q)')
->setParameter('user', $user)
我刚回到这个功能,我尝试了你的解决方案。它返回了一个无效的PathExpression。必须是SingleValuedAssociationField错误,因此我尝试摆脱这些标识筛选器,它可以工作:->和WHERE'notexists从EvoBackendBundle:Invoice I中选择1,其中I.type=1和I.parent=q'。非常感谢。