Выберите связанные сущности в методе получения сущностей в Symfony2

0

как я могу создать пользовательский поиск в Symfony2, что я могу вызвать из контекста объекта (например, метод getter) вместо контекста репозитория. Вот мой запрос в классе EntityRepository:

public function getUpVotes($trip_id)
{
    return count($this->getEntityManager()
        ->createQueryBuilder()
        ->select('t')
        ->from('VputiTripBundle:Trip', 't')
        ->join('t.ratings', 'r')
        ->where('r.trip = :tid')
        ->andWhere('r.up = :up')
        ->setParameters(['tid' => $trip_id, 'up' => 1])
        ->getQuery()
        ->getResult());
}

Целью этого является то, что я могу назвать это $model-> getUpVotes() вместо репозитория сущности вызова и передать параметры вручную.

  • 0
    Сущности не имеют доступа к менеджеру сущностей. Инъекция менеджера неодобрительна и не очень хороша. Дайте Doctrine 2 шанс и сделайте все "правильным образом", загрузив свои голоса в исходном запросе или создав службу голосования. Если все это все еще кажется неудобным, тогда переключитесь на активную реализацию записи.
Теги:
doctrine
repository
entity

1 ответ

3
Лучший ответ

Если у вас установлена ассоциация, вы можете использовать get с фильтром.

public function getUpVotes()
{
    return $this->ratings->filter(
        function (RatingInterface $rating) {
            return 1 === $rating->getUp();
        }
    );
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню