Symfony2 - Acessar funções do repositório na Entidade
Digamos que eu tenha duas tabelas no meu banco de dados: Coelhos e Cenouras. Os coelhos podem ter 0 ou múltiplos cenouras e uma cenoura pertence a um único coelho. Essa é uma relação 1, n entre essas duas tabela
Tenho então duas entidades, coelho e cenour
Tenho uma variedade de coelhos passada no meu modelo e gostaria de obter cenouras específicas de cada coelho e exibi-las: digamos que quero obter as 10 cenouras mais caras (os preços das cenouras seriam armazenados na tabela de cenouras) de cada $ coelho na matriz.
Algo como
{% for rabbit in rabbits %}
{% for carrot in rabbit.getMoreExpensiveCarrots %}
{{ carrot.price }}
{% endfor %}
{% endfor %}
Estou usando a classe repository, mas se eu criar uma função getMoreExpensiveCarrots ($ rabbit) em uma classe repository rabbit, não conseguiria acessar essa função a partir de uma classe de entidade como essa, que é o que eu quero:
$ rabbit-> getMoreExpensiveCarrots ()
Eu pensei que uma maneira de fazer isso seria criar um getMoreExpensiveCarrots () na entidade coelho:
// 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;
}
}
Pensei que também poderia fazer isso:
// Entity rabbit
class Rabbit
{
public function getMoreExpensiveCarrots()
{
$this->getCarrots();
// Then try here to sort the carrots by their price, using php
return $carrots;
}
}
Aqui está o meu controlador:
public function indexAction()
{
$em = $this->getDoctrine()->getEntityManager();
$rabbits = $em->getRepository('AppNameBundle:Rabbit')->getSomeRabbits();
return $this->render('AppNameBundle:Home:index.html.twig',
array(
"rabbits"=>$rabbits
));
}
Qual é a melhor prática para chamar uma função getMoreExpensiveCarrots de cada coelho no modelo?
Obrigado