我有2个实体 - Products
和Region
。它们具有ManytoMany
关系,并与第三个实体Product_region
相关联。其代码如下:
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Product_region
*
* @ORM\Table(name="product_region")
* @ORM\Entity
*/
class Product_region
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \AppBundle\Entity\Products
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Products")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="row_id")
* })
*
*/
private $productid;
/**
* @var \AppBundle\Entity\Region
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Region")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="region_id", referencedColumnName="id")
* })
*/
private $regionid;
}
我需要将所有products
及其区域下载到一个数组中,以便具有以下内容:
[
[0]=>[
'name'=> 'product_1',
'regions=>[
[0]=>['id'=>'1', 'name'=>'region_1'],
[1]=>['id'=>'2', 'name'=>'region_2']...
]
],
[1]=> ...
]
我尝试使用以下代码执行此操作:
$qb = $em->createQueryBuilder();
$qb->select('p', 'pnr')
->from('AppBundle:Products', 'p')
->leftJoin('AppBundle:Product_region', 'pr', 'WITH', 'p = pr.productid')
->leftJoin('AppBundle:Region', 'pnr', 'WITH', 'pnr = pr.regionid');
$res = $qb->getQuery()->getResult();
但如果我尝试var_dump($res)
,它会挂起浏览器并开始传输无限量的数据。任何想法如何解决它将是受欢迎的。谢谢。