Скажем, что у меня есть две таблицы в моей базе: Кролики и морковь. Кролики могут иметь морскую морковь или морковь, а морковь принадлежит одному кролику. Это отношение 1, n между этими двумя таблицами.
У меня есть два сущности, кролик и морковь.
У меня есть массив кроликов, прошедших в моем шаблоне, и я хотел бы получить конкретную морковь от каждого кролика и показать их: пусть я хочу получить 10 дорогих морков (цены на морковь будут храниться в таблице для моркови) от каждого $кролика в массиве.
Что-то вроде:
{% for rabbit in rabbits %}
{% for carrot in rabbit.getMoreExpensiveCarrots %}
{{ carrot.price }}
{% endfor %}
{% endfor %}
Я использую класс репозитория, но если я создам функцию getMoreExpensiveCarrots ($ rabbit) в классе репозитория кроликов, я бы не смог получить доступ к этой функции из класса сущности, как это, что я хочу:
$rabbit- > getMoreExpensiveCarrots()
Я думал, что способ сделать это - создать getMoreExpensiveCarrots() в объекте кролика:
// Entity rabbit
class Rabbit
{
public function getMoreExpensiveCarrots()
{
// Access repository functions like getMoreExpensiveCarrots( $rabbit )
// But how can I do such thing ? Isn't that bad practise ?
return $carrots;
}
}
Я думал, что тоже могу это сделать:
// Entity rabbit
class Rabbit
{
public function getMoreExpensiveCarrots()
{
$this->getCarrots();
// Then try here to sort the carrots by their price, using php
return $carrots;
}
}
Вот мой контроллер:
public function indexAction()
{
$em = $this->getDoctrine()->getEntityManager();
$rabbits = $em->getRepository('AppNameBundle:Rabbit')->getSomeRabbits();
return $this->render('AppNameBundle:Home:index.html.twig',
array(
"rabbits"=>$rabbits
));
}
Какова наилучшая практика вызова функции getMoreExpensiveCarrots от каждого кролика в шаблоне?
Спасибо!