2014-11-23 17 views
1

我有類別表和製表。這兩個表都與第三個category_make表相關,創建了多對多的關係。從教義收集載入相關的內容symfony2

/** 
    * @var \Doctrine\Common\Collections\Collection 
    * 
    * @ORM\ManyToMany(targetEntity="Ladisi\MotorsBundle\Entity\Make", inversedBy="catogory", fetch="EAGER") 
    * @ORM\JoinTable(name="catogory_make", 
    * joinColumns={ 
    *  @ORM\JoinColumn(name="catogory_id", referencedColumnName="cat_id") 
    * }, 
    * inverseJoinColumns={ 
    *  @ORM\JoinColumn(name="make_id", referencedColumnName="make_id") 
    * } 
    *) 
    */ 
    private $make; 

我想獲得屬於特定類別的品牌。我曾嘗試過,

 $query = $em 
      ->createQuery(
       'SELECT c, m FROM LadisiMotorsBundle:Catagory c 
       JOIN c.make m 
       WHERE c.catId= :id' 
      )->setParameter('id', $id); 
     $result = $query->getResult(); 

但每次我只有類別字段,使實體不可用的結果。我也嘗試通過調用類對象的getMakes方法來獲得結果,它也返回null(不是實體,我猜是代理)。我如何解決這個問題。任何幫助都會很棒。

回答

0

你已經創建了一個鏈接表,所以你唯一需要做的(如果你有正確的配置你的實體)在你的控制器:

$catagory = $this->getDoctrine()->getManager()->getRepository('LadisiMotorsBundle:Catagory')->findOneBy(['id' => $id]); 
$catagory->getMakes(); 
+0

正如我所說,我已經試過你的方法是返回null,這就是爲什麼我發佈的問題。 – 2014-12-16 15:20:39

+0

你可以在你的Catagory實體中顯示代碼嗎?我看到你用catogory和catagory不一致。這可能是要看的東西。 – priktop 2014-12-16 16:08:59

+0

我知道有一些拼寫錯誤,我通過使用'$ result = $ query-> getResult(Query :: HYDRATE_ARRAY);'在發佈的代碼上解決了問題。我忘記了我能夠找到解決方案,謝謝任何方式。但我不知道這裏會發生什麼,如果你不介意你能解釋爲什麼你的方法不起作用(我再次嘗試過,考慮錯別字)。有什麼和抓取方法有關嗎? – 2014-12-16 16:53:47