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