Symfony Doctrine获得多对多(商店和类别)

时间:2014-03-05 15:33:16

标签: symfony doctrine-orm repository

我有点失落。

我想获得一个包含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应该如何?

先谢谢你们!

1 个答案:

答案 0 :(得分: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 %}