查询的多对多单向问题

时间:2014-09-16 11:05:16

标签: php symfony doctrine

我面临一些问题,我想在多对多关系中做一个查询

我有两个实体:网站和语言

网站是业主方所以我有:

class Site 
{
   /**
    * @ORM\ManyToMany(targetEntity="Language", cascade={"persist"})
    */
   protected $languages;

   public function __construct()
   {
      $this->languages = new ArrayCollection();
   }

   public function getLanguages()
   {
      return $this->languages;
   }

   public function setLanguages($languages)
   {
      $this->languages = $languages;

      return $this;
   }
}

语言实体:

class Language
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="code", type="string", length=255)
     */
    private $code;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    ... (getters and setters)

}

在树枝模板中,我显示所有网站。 我想添加一个包含每个网站语言的新专栏,但我不知道我可以做些什么来获得这个...

总之,我需要做些什么来获取网站的所有语言?

编辑:我的操作将数据发送到twig模板:

public function indexListSiteAction()
        {
            $repository = $this->get('doctrine')
                ->getRepository('BackBundle:Site');

            if (!$repository) {
                throw $this->createNotFoundException('Unable to find Site entity.');
            }

            $sites = $repository->findAll();

            return $this->render('BackBundle:Site:site_list.html.twig', array(
                'sites'       => $sites,
            ));
        }

1 个答案:

答案 0 :(得分:0)

您可以非常轻松地访问模板中的$languages

你会做这样的事情:

<ul>
    {% for element in entity.languages %}
        <li>{{ element.name }}</li>
    {% endfor %}
</ul>

我建议您阅读 Twig 中的documentation about loops