2014-10-27 66 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