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