2014-03-05 56 views
1

我有點失落。Symfony Doctrine得到多對多對象(Shop&Category)

我想得到一個名單與所有商店的店名和所有類別的商店。例如 SHOPNAME:休閒,旅遊,機票

,我想我在推理做出的錯誤。下面我的代碼:

這裏是ShopRepository:

public function getCategoryAndShops() { 
    return $this 
    -> createQueryBuilder('s') 
    -> select('s, c') 
    -> leftJoin('s.categoryShop', 'c') 
    -> getQuery() -> execute(); 
} 

這裏是ShopController:

$em = $this->getDoctrine()->getManager(); 

    //$entities = $em->getRepository('DbeDonaciBundle:Shop')->findAll(); 
    $entities = $em->getRepository('DbeDonaciBundle:Shop')->getCategoryAndShops(); 
    return $this->render('DbeDonaciBundle:Shop:index.html.twig', array(
     'entities' => $entities, 
    )); 

哪裏失誤和index.html.twig應該怎麼樣子?

在此先感謝你們!

回答

3

既然你已經在你的實體的關係,你可以去這樣的事情:

$entities = $em->getRepository('DbeDonaciBundle:Shop')->findAll(); 

而且在你的模板:

{% for entity in entities %} 
     {{ entity.name }}: 
     <ul> 
      {% for cat in entity.categoryShop %} 
      <li>{{ cat.name }}</li> 
      {% endfor %} 
    </ul> 
{% endfor %} 
+0

非常感謝它完美,我希望它要困難得多! – joelschmid

+0

嘿,如果我想要顯示兩次所有類別,但每次只顯示一次類別,該怎麼辦?我可以用樹枝做限制嗎? – joelschmid

+0

我不明白。你能否添加一個你想問什麼的例子? – ferdynator