Doctrine获取更多表关系中的数据

时间:2017-01-13 10:06:08

标签: php doctrine-orm

我该如何处理这种情况。

我有桌子:Item, Item_Picture, Vendor

Item_PictureItem (item_id)

有关系

ItemVendor (vendor_id)

有关系

如何从Vendor获取Item_Picture

我知道如何getItem来自Item_Picture。 但我可以getVendor以某种方式来自Item_Picture吗?

例如,我可以从Controller得到我想要的东西:

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

我对更干净的方式感兴趣?

1 个答案:

答案 0 :(得分: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();