У меня возникли проблемы с запросом, который я хочу сделать во многих отношениях
У меня есть две сущности: сайт и язык
Сайт принадлежит владельцу, поэтому у меня есть:
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)
}
В шаблоне ветки я отображаю все сайты.
И я хочу добавить новую колонку с языками каждого сайта, но я не знаю, какой запрос я могу сделать, чтобы получить это …
Таким образом, какой запрос я должен сделать, чтобы получить все языки сайта ??
РЕДАКТИРОВАТЬ : мое действие, которое отправляет данные в шаблон веточки:
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,
));
}
Вы можете получить доступ $languages
в вашем шаблоне очень легко.
Вы бы сделали что-то вроде этого:
<ul>
{% for element in entity.languages %}
<li>{{ element.name }}</li>
{% endfor %}
</ul>
Я рекомендую прочитать документация о петлях в прут.
Других решений пока нет …