2014-11-23 27 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