#symfony #join #doctrine-orm #entity #parent-child
#symfony #Присоединиться #doctrine-orm #сущность #родитель-потомок
Вопрос:
я попытался выбрать одну запись с ее дочерними элементами, как показано ниже:
$job = $em->getRepository('RaxcidoBaseBundle:Job')->findOneById($id);
это вернет мне массив, в котором также есть запись и все дочерние элементы.
теперь я хочу выбрать это задание, если у него есть дочерний элемент с name =’test’, каково решение?
я предпочитаю использовать функции docrine, а не запрос
это мои сущности
<?php
...
class Job
{
...
/**
* @ORMOneToMany(targetEntity="JobPrerequisite", mappedBy="job")
*/
protected $prerequisites;
и
<?php
...
class JobPrerequisite
{
...
/**
* @ORMManyToOne(targetEntity="Job", inversedBy="prerequisites")
* @ormJoinColumn(name="job_id", referencedColumnName="id")
*/
protected $job;
/**
* @ormColumn(type="string")
*/
protected $name;
Спасибо
Ответ №1:
Вы можете сделать это в этих двух строках :
Сначала найдите $jobPrerequisite, относящийся к name = ‘test’
$jobPrerequisite = $em->getRepository('RaxcidoBaseBundle:JobPrerequisite')->findOneBy(array('name' => 'test'));
и затем ваша $ job, соответствующая указанному выше $jobPrerequisite
$job = $em->getRepository('RaxcidoBaseBundle:Job')->findOneBy(array('prerequisites' => $jobPrerequisite));