从教义集合 Symfony2 加载相关条目


load related entiites from doctrine collection symfony2

我有类别表和制作表。两个表由第三个表category_make表相关,从而产生多对多关系。

/**
     * @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方法来获取make,它也返回null(不是实体,我猜是代理)。我该如何解决这个问题。任何帮助都会很棒。

您已经创建了一个链接表,因此您在控制器中唯一需要做的就是(如果实体配置正确):

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