Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过更多的表关系获取数据_Php_Doctrine Orm - Fatal编程技术网

Php 通过更多的表关系获取数据

Php 通过更多的表关系获取数据,php,doctrine-orm,Php,Doctrine Orm,我如何处理这种情况 我有表格:Item,Item\u图片,供应商 Item\u图片与Item(Item\u id) 项目与供应商(供应商id) 如何从商品图片获取供应商 我知道如何从Item\u图片获取Item。 但是我也可以从商品图片获取供应商吗 例如,我可以像这样从控制器获得我想要的: $pictureRepository = $this->getContainer()->get('doctrine') ->getRepo

我如何处理这种情况

我有表格:
Item,Item\u图片,供应商

Item\u图片
Item(Item\u id)

项目
供应商(供应商id)

如何从
商品图片
获取
供应商

我知道如何从
Item\u图片
获取Item
。 但是我也可以从
商品图片
获取供应商

例如,我可以像这样从控制器获得我想要的:

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

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

我更喜欢查询生成器帮助构建这样的查询的方式,因为它更接近真实的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();
请阅读这里:并改进你的问题。