在我的 Symfony2 项目中,我有两个实体:Spot 和 Weather,两个实体之间具有一对多的关系“weatherReports”。
一些天气报告已经过时,所以我想创建一个“activeWeatherRecords”方法来过滤 Spot 实体中的 Weather 实体。
不幸的是,我看不到如何做到这一点。这个想法不是从控制器中获取对象,因为 Spot 对象被收藏,链接到用户对象并直接从树枝模板访问。
所以这里有一个问题:直接从树枝模板过滤关系的最佳方法是什么?
2013 年 9 月 11 日更新
我设法用我的关系上的过滤方法过滤了我的关系。
在我的现场实体中,我声明了一个 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 %}
[...]