2017-01-13 4 views
-1

Wie kann ich mit dieser Situation umgehen?Doctrine erhält Daten über mehrere Tabellenbeziehungen hinweg

I Tabellen haben: Item, Item_Picture, Vendor

Item_Picture hat Bezug auf Item (item_id)

Item Bezug auf Vendor (vendor_id) hat

Was die Art und Weise ist, wie Vendor von Item_Picture zu bekommen?

Ich weiß, wie getItem von Item_Picture. Aber kann ich getVendor irgendwie von Item_Picture auch?

Zum Beispiel kann ich bekommen, was ich von Steuer wollen wie folgt aus:

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

Ich interessiere mich für sauberere Wege vielleicht?

+0

Lesen Sie hier bitte: http://stackoverflow.com/help/how-to-ask und verbessern Sie Ihre Frage. – Wilt

Antwort

0

Ich bevorzuge die Art und Weise Abfrage Builder hilft, Abfragen wie diese zu erstellen, weil es näher an realen SQL-Abfrage ist und vermeiden, laden Sie das gesamte Repository.

$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(); 
Verwandte Themen