@tectolog

Как в Doctrine Symsony2 написать запрос к таблицам БД, имеющих one-to-many отношение?

Всем привет!

Нужна помощь разобраться с запросом к БД.
1. Ситуация:
в БД есть 3 таблицы:
#repairwork (виды рем.работ) - справочник
id | name |

#demand (заявки)
id | прочие параметры | ... | прочие параметры |

#repairworkdemand (рем.работы, примененные в заявках)
id | demand.id | repairwork.id | прочие параметры | ... | прочие параметры |

Entity Demand.php #demand (заявки) имеет параметр $repairworkdemand, связывающий Entity Demand.php отношением one-to-many с сущностью Entity Repairworkdemand.php #repairworkdemand (рем.работы, примененные в заявках)

На сайте автоматом постранично выводятся все заявки - используется та же Entity Demand.php #demand (заявки) - рем.работы цепляются и выводятся в соответствующий столбец.
На этой же странице есть форма с фильтрацией заявок #demand по всем параметрам - все работает, все фильтруется - в обработке используется запрос к БД, написанный в:
...
$oldemands = $this->entityManager->createQuery(SELECT o FROM Acme\AppBundle\Entity\...\Oldemand o WHERE ...);
$oldemands->setParameters( ... );
...

осуществляемый через Entity Demand.php #demand (заявки), которая "завязана" на #repairworkdemand (рем.работы, примененные в заявках)

Теперь понадобилось добавить фильтрацию по параметру repairwork.id (по видам рем.работ) в виде раскрывающегося списка repairwork.name. Список работает, сабмитится, repairwork.id передается в обработку. В итоге обработка должна "вытащить только те заявки, в которых есть указанный repairwork.id"

2.Вопрос:
как именно в таком формате, а если нельзя, то в каком тогда возможно
...
$oldemands = $this->entityManager->createQuery( ... ); 
$oldemands->setParameters( ... );
...

прописать запрашиваемый repairwork.id к #repairworkdemand (рем.работы, примененные в заявках), чтобы в итоге вывести найденные заявки?

3.Примечание:
напоминание, Entity Demand.php #demand (заявки) и Entity Repairworkdemand.php #repairworkdemand (рем.работы, примененные в заявках) связаны через прописанную в Entity Demand.php #demand (заявки) переменную $repairworkdemand:
...
/**
* @ORM\OneToMany(targetEntity="Acme\AppBundle\Entity\Show\Repairworkoldemand", mappedBy="oldemand", cascade={"persist"})
*/
private $repairworkdemand;

public function getRepairworkdemand()
{
      return $this->repairworkdemand;
}
...


Спасибо!
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы