У меня есть много-много отношений с Employee и MembreFamille. И я хочу получить все MembreFamilles, у которых есть Сотрудник. Это мой запрос:Query Builder со связью и условием во многих отношениях.
class MembreFamilleRepository extends EntityRepository
{
public function getMembres($emp)
{
$qb = $this->createQueryBuilder('a');
$qb
->leftJoin('a.employees', 'employees');
$qb
->where('employees.id = :id')
->setParameter('id', $emp);
return $qb
->getQuery()
->getResult()
;
}
}
Когда я протестировать эту функцию в контроллере, то функция возвращает 0 результат.
Отображение в Сотрудника Entity:
/**
* @ORM\ManyToMany(targetEntity="PFE\EmployeesBundle\Entity\MembreFamille", cascade={"persist"})
*/
private $membreFamilles;
по картированию в MembreFamille Entity:
/**
* @ORM\ManyToMany(targetEntity="PFE\UserBundle\Entity\Employee", cascade={"persist"})
*/
private $employees;
Использование в контроллере ($ сотрудник является экземпляром Employee Entity):
$list = $em->getRepository('PFEEmployeesBundle:MembreFamille')->getMembres($employee->getId());
$ эми является целым числом ? Можете ли вы также показать нам сопоставление между сотрудником и membreFamilie? –
Да $ emp - целое число. – mehdi
Кажется, что ваш запрос извлекает каждый MembreFamille, у которого есть сотрудник с идентификатором $ emp, а не каждый MembreFamille, у которого есть сотрудник (любой из них). – Hakim