私の Symfony2 プロジェクトでは、Spot と Weather という 2 つのエンティティがあり、2 つのエンティティ間に 1 対多の関係 "weatherReports" があります。
一部の天気予報は古くなっているため、「activeWeatherRecords」メソッドを作成して、スポット エンティティの天気エンティティをフィルター処理したいと考えています。
残念ながら、これを行う方法がわかりません。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 %}
[...]