Symfony2 - Доступ к функциям репозитория в Entity
Допустим, у меня есть две таблицы в моей базе данных: кролики и морковь. У кроликов может быть 0 или несколько морковок, а морковь принадлежит одному кролику. Это отношение 1, n между этими двумя таблицами.
У меня есть две сущности: кролик и морковь.
У меня есть массив кроликов, переданных в моем шаблоне, и я хотел бы получить конкретную морковь от каждого кролика и показать их: скажем, я хочу получить 10 более дорогих морковок (цены на морковь будут храниться в таблице морковей) от каждого $ кролик в массиве.
Что-то вроде :
{% for rabbit in rabbits %}
{% for carrot in rabbit.getMoreExpensiveCarrots %}
{{ carrot.price }}
{% endfor %}
{% endfor %}
Я использую класс репозитория, но если я создам функцию getMoreExoyCarrots ($ rabbit) в классе репозитория rabbit, я не смог бы получить доступ к этой функции из класса сущностей, как это, что я и хочу:
$ Rabbit-> getMoreExpensiveCarrots ()
Я подумал, что способ сделать это будет создать getMoreExoyCarrots () в объекте кролика:
// 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
));
}
Как лучше всего вызывать функцию getMoreExoyCarrots для каждого кролика в шаблоне?
Спасибо!