symfony3 ManytoMany加入请求

时间:2017-08-15 15:57:26

标签: php symfony

我有2个实体 - ProductsRegion。它们具有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),它会挂起浏览器并开始传输无限量的数据。任何想法如何解决它将是受欢迎的。谢谢。

0 个答案:

没有答案