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

questionAnswers(6)

yourAnswerToTheQuestion