symfony2和doctrine以及where子句中的子节点

时间:2014-07-06 06:50:46

标签: symfony join doctrine-orm entity parent-child

我尝试选择一条带有子项的记录,如下所示:

$job = $em->getRepository('RaxcidoBaseBundle:Job')->findOneById($id);

它会返回一个包含记录和所有孩子的数组。 现在我想选择这个工作,如果有一个名字='test'的孩子,解决方案是什么? 我更喜欢使用docrine函数,而不是查询

这些是我的实体

<?php
...
class Job
{
...
/**
  * @ORM\OneToMany(targetEntity="JobPrerequisite", mappedBy="job")
 */
protected $prerequisites;

<?php
...
class JobPrerequisite
{
...
/**
 * @ORM\ManyToOne(targetEntity="Job", inversedBy="prerequisites")
 * @orm\JoinColumn(name="job_id", referencedColumnName="id")
 */
protected $job;

/**
 * @orm\Column(type="string")
 */
protected $name;

感谢

1 个答案:

答案 0 :(得分:1)

您可以在以下两行中执行此操作:

首先找到与name ='test'相关的$ jobPrerequisite

$jobPrerequisite = $em->getRepository('RaxcidoBaseBundle:JobPrerequisite')->findOneBy(array('name' => 'test'));

然后你的$ job与$ jobPrerequisite

相关
 $job = $em->getRepository('RaxcidoBaseBundle:Job')->findOneBy(array('prerequisites' => $jobPrerequisite));