2014-10-27 70 views
0

paises我已经FabricanteDistribuidor.php实体与此代码:如何从关系

class FabricanteDistribuidor 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Pais", mappedBy="fabricanteDistribuidor", cascade={"persist"}) 
    */ 
    private $paises; 


    /** 
    * Set paises 
    * 
    * @param \AppBundle\Entity\Pais $pais 
    * @return FabricanteDistribuidor 
    */ 
    public function setPaises(\Sencamer\AppBundle\Entity\Pais $pais) 
    { 
     $this->paises[] = $pais; 
     return $this; 
    } 

    /** 
    * Get paises 
    * 
    * @return Doctrine\Common\Collections\Collection 
    */ 
    public function getPaises() 
    { 
     return $this->paises; 
    } 

} 

和相关Pais.php实体代码:

class Pais 
{ 
    use IdentifierAutogeneratedEntityTrait; 
    use NamedEntityTrait; 
    use ActiveEntityTrait; 

    /** 
    * @ORM\ManyToMany(targetEntity="Sencamer\AppBundle\Entity\FabricanteDistribuidor", inversedBy="paises", cascade={"persist"}) 
    * @ORM\JoinTable(name="negocio.fabricante_distribuidor_pais", schema="negocio", 
    *  joinColumns={@ORM\JoinColumn(name="fabricante_distribuidor", referencedColumnName="id")}, 
    *  inverseJoinColumns={@ORM\JoinColumn(name="pais_id", referencedColumnName="id")} 
    *) 
    */ 
    protected $fabricanteDistribuidor; 

    /** 
    * Add fabricanteDistribuidor 
    * 
    * @param AppBundle\Entity\FabricanteDistribuidor $fabricanteDistribuidor 
    */ 
    public function addfabricanteDistribuidor(\AppBundle\Entity\FabricanteDistribuidor $fabricanteDistribuidor) 
    { 
     $this->fabricanteDistribuidor[] = $fabricanteDistribuidor; 
    } 

    /** 
    * Get fabricanteDistribuidor 
    * 
    * @return Doctrine\Common\Collections\Collection 
    */ 
    public function getfabricanteDistribuidor() 
    { 
     return $this->fabricanteDistribuidor; 
    } 

} 

我想现在就得到相关paisesFabricanteDistribuidor如下,我做错了,因为我不能得到他们的名字,所以我的代码有什么错?

public function obtenerDetallesFabricanteAction(Request $request) 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $entity = $em->getRepository('AppBundle:FabricanteDistribuidor')->find($request->query->get('id')); 

    if ($request->isXmlHttpRequest()) { 
     $response['entities'] = array(); 

     $dataResponse = array(); 
     // rest of columns .... 

     if ($entity->getPaises() instanceof Pais) { 
      $paises = array(); 
      foreach ($entity->getPaises() as $pais) { 
       $paises[] = $pais->getNombre(); 
      } 

      $dataResponse['paises'] = $paises; 
     } 

     $response['entities'][] = $dataResponse; 
     return new JsonResponse($response); 
    } 
} 

也许正确的做法是要经过一个学说存储库中的DQL但随后是性能问题,在这里我不是专家,所以需要一个线索或解决类似的问题。

现在有了这个相同的类我也关注相关Pais类,因为当你看到我加相逆的一侧$fabricanteDistribuidor所以,我必须要插入此任我要插入一个新的Pais或仅仅是告诉学说如何处理里面的代理?我还没有清楚如何拥有/反转的工作,也许是由于我做了我的代码显示的东西。有关这方面的任何建议吗?

回答

0

可能是你缺少初始化$paises(还有$fabricanteDistribuidor)集合吗?它不应该是这样吗?:

class FabricanteDistribuidor 
{ 
    /** 
    * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Pais", mappedBy="fabricanteDistribuidor", cascade={"persist"}) 
    */ 
    private $paises; 

    public function __construct() 
    { 
     $this->paises = new ArrayCollection(); // don't forget to import it 
    } 

    .... 
} 
+0

不,这不是问题我仍然得到NULL – ReynierPM 2014-10-27 19:40:44