2017-01-13 3 views
-1

Как я могу справиться с этой ситуацией.Doctrine получить данные в других отношениях таблицы

У меня есть таблицы: Item, Item_Picture, Vendor

Item_Picture имеет отношение к Item (item_id)

Item имеет отношение к Vendor (vendor_id)

Каковы способы, как получить Vendor от Item_Picture?

Я знаю как getItem от Item_Picture. Но могу ли я getVendor как-то от Item_Picture тоже?

Например, я могу получить то, что я хочу от контроллера, как это:

$pictureRepository = $this->getContainer()->get('doctrine') 
          ->getRepository(ItemPicture::class); 
$picture = $pictureRepository->find(1); 
$vendor = $picture->getItem()->getVendor(); 

Я заинтересован в более чистых способах возможно?

+0

Читайте здесь, пожалуйста: http://stackoverflow.com/help/how-to-ask и улучшите свой вопрос. – Wilt

ответ

0

Я предпочитаю, как построитель запросов помогает создавать запросы, подобные этому, потому что он ближе к реальному sql-запросу и не загружает весь репозиторий.

$qb = $this->getContainer()->get('doctrine')->createQueryBuilder(); 
$qb->select(['c.venderName']); 
$qb->from(ItemPicture::class, 'a'); 
$qb->leftJoin('a.item', 'b'); 
$qb->leftJoin('b.vendor', 'c'); 
$qb->where($qb->expr()->eq('a.id', ':id')); 
$qb->setParameter('id', 1); 
$vendor = $qb->getQuery()->getResult();