2016-06-15 3 views
0

У меня есть объект пользователя, которые имеют секторы, связанные (например, сектор А, В, С и так далее)Symfony учение findby => columnValue содержится в

(сектор является юридическим лицом тоже)

Тогда у меня есть объект документа, которые секторы, связанные слишком

Я хочу, чтобы получить все документы, где ее секторы находятся в объекте пользователя ...

Как сделать это с доктриной?

$repo = $this->getDoctrine()->getRepository('MyBundle:Document'); 
$sectors = $this->getUser()->getSectors(); 

$repo->findBy(['sectors'=>???]); 

ответ

0

Это один должен быть достаточно:

$repo = $this->getDoctrine()->getRepository('MyBundle:Document'); 
$sectors = $this->getUser()->getSectors(); 
$sectorIds = array_map(function($sector) { return $sector->getId(); }, $sectors); 

$queryBuilder = $repo->createQueryBuilder('document'); 
$queryBuilder 
    ->lefJoin('document.sectors', 'sector') 
    ->where('sector.id IN (:sectorIds)') 
    ->setParameter('sectorIds', $sectorIds); 

$documents = $queryBuilder->getQuery()->getResult(); 

Вдохновленный из How to use WHERE IN with Doctrine 2

+0

Нет, он не будет работать, потому что Docs может иметь более одного сектора. Например, пользователь имеет сектора A, B и Doc1, в секторах A, B, C и Doc2 есть сектор A. Поэтому мне нужно получить ТОЛЬКО (в данном случае) Doc2 (вызывать Doc1 как сектор C тоже, которого у Пользователя нет) – Francesco

Смежные вопросы