我有一个非常复杂的 Doctrine 关系架构,查询起来很头疼。它是这样写的:
项目 [OneToMany, Bidirectional]
里程碑
里程碑 [OneToMany, Bidirectional]
冲刺
冲刺 [OneToMany, Bidirectional]
票
因此,工单直接依赖于 Sprint,而不是项目或里程碑。它几乎就像一个树层次结构。它工作得很好。但是,我在以下方面遇到严重问题:
- 我如何发现来自特定项目的所有票证?
- 我如何发现特定里程碑的所有门票?
我有一个非常复杂的 Doctrine 关系架构,查询起来很头疼。它是这样写的:
项目 [OneToMany, Bidirectional]
里程碑
里程碑 [OneToMany, Bidirectional]
冲刺
冲刺 [OneToMany, Bidirectional]
票
因此,工单直接依赖于 Sprint,而不是项目或里程碑。它几乎就像一个树层次结构。它工作得很好。但是,我在以下方面遇到严重问题:
使用 Doctrine Query Builder,您可以从这样的项目中获取所有票证:
$project_id = ...
$repository = $this->getDoctrine()->getRepository('AcmeBundle:Ticket');
$query = $repository->createQueryBuilder('t')
->join('t.sprint', 's')
->join('s.milestone', 'm')
->join('m.project', 'p')
->where('p.id = :project_id')
->setParameter('project_id', $project_id)
->getQuery();
这就是从里程碑中检索所有票证的方式:
$milestone_id = ...
$repository = $this->getDoctrine()->getRepository('AcmeBundle:Ticket');
$query = $repository->createQueryBuilder('t')
->join('t.sprint', 's')
->join('s.milestone', 'm')
->where('m.id = :milestone_id')
->setParameter('milestone_id', $milestone_id)
->getQuery();