Лучший способ фильтровать отношения из шаблона ветки

в моем проекте Symfony2 у меня есть два объекта: Spot and Weather, с отношением "один-ко-многим" "weatherReports" между двумя объектами.

Некоторые метеорологические отчеты устарели, поэтому я хотел бы создать метод "activeWeatherRecords" для фильтрации объектов Weather в объекте Spot.

К сожалению, я не вижу, как это сделать. Идея заключается не в том, чтобы извлекать объекты из контроллера, поскольку объекты Spot являются фаворитами, связанными с объектом User и доступными непосредственно из шаблона ветки.

Итак, вот вопрос: какой лучший способ фильтровать отношения непосредственно из шаблона ветки?

ОБНОВЛЕНИЕ 09/11/2013

Мне удалось отфильтровать мои отношения с методом фильтрации в моих отношениях.

В моем объекте я объявил метод getActiveWeatherRecords():

public function getActiveWeatherReports()
 {
 // Date
 $date = new \DateTime(date('Y-m-d 12:00:00', time()));

 // Criteria
 $criteria = Criteria::create()
 ->where(Criteria::expr()->gte("date", $date))
 ->orderBy(array("date" => Criteria::ASC))
 ;

 return $this->weatherReports->matching($criteria);
 }

И я могу назвать этот метод из шаблона ветки просто так:

[...]
{% for weatherReport in spot.activeWeatherReports %}
[...]
{% endfor %}
[...]
1 ответ

Один из способов - создать метод finder, который извлекает только активные записи. Вы можете поместить этот метод в репозиторий Doctrine, вызвать его из своего контроллера (или уровня сервиса) и передать его в свой шаблон.

Другой способ - добавить метод фильтрации прямо к вашей сущности. Таким образом, вам не нужно вызывать отдельный метод и передавать результат в шаблон - сущности, которую вы передаете сущности, будет достаточно.

licensed under cc by-sa 3.0 with attribution.