我有类别表和制作表。这两个表都与第三个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();
但每次我只获得类别字段时,make实体在结果中不可用。我也尝试通过在catagory对象上调用getMakes方法来获取make,它也返回null(不是实体,我猜代理)。我该如何解决这个问题。任何帮助都会很棒。
答案 0 :(得分:0)
您已经创建了一个链接表,因此您只需在控制器中执行操作(如果您的实体配置正确):
$catagory = $this->getDoctrine()->getManager()->getRepository('LadisiMotorsBundle:Catagory')->findOneBy(['id' => $id]);
$catagory->getMakes();