Symfony2 - Funciones de repositorio de acceso en la Entidad

Digamos que tengo dos tablas en mi base de datos: conejos y zanahorias. Los conejos pueden tener 0 o múltiples zanahorias y una zanahoria pertenece a un solo conejo. Esa es una relación 1, n entre esas dos tablas.

Tengo entonces dos entidades, conejo y zanahoria.

Tengo una variedad de conejos pasados en mi plantilla y me gustaría obtener zanahorias específicas de cada conejo y mostrarlas: digamos que quiero obtener las 10 zanahorias más caras (los precios de las zanahorias se almacenarían en la tabla de zanahorias) de cada $ conejo en la matriz.

Algo como

{% for rabbit in rabbits %}
    {% for carrot in rabbit.getMoreExpensiveCarrots %}

        {{ carrot.price }}

    {% endfor %}
{% endfor %}

Estoy usando la clase de repositorio, pero si creo una función getMoreExpensiveCarrots ($ rabbit) en una clase de repositorio de conejo, no podría acceder a esa función desde una clase de entidad como esa, que es lo que quiero:

$ conejo-> getMoreExpensiveCarrots ()

Pensé que una forma de hacerlo sería crear un getMoreExpensiveCarrots () en la entidad conejo:

// 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;
    }         
}

Pensé que podría hacer eso también:

    // Entity rabbit
    class Rabbit
    {
        public function getMoreExpensiveCarrots()
        {
            $this->getCarrots();

            // Then try here to sort the carrots by their price, using php            

            return $carrots;
        }         
    }

Aquí está mi 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
        ));
    }

Cuál es la mejor práctica para llamar a una función getMoreExpensiveCarrots de cada conejo en la plantilla?

¡Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta