Symfony2 - Доступ к функциям репозитория в Entity

Допустим, у меня есть две таблицы в моей базе данных: кролики и морковь. У кроликов может быть 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 из каждого кролика в шаблоне?

Спасибо!

15
задан httpete 8 February 2012 в 18:02
поделиться