我有类别表和制作表。两个表由第三个表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();