私は次の設定をしています:
クラブは特定のタイプのアクティビティを提供するため、関係を持つ 3 つのモデル:
クラブ:
function activities()
{
return $this->hasMany('Activity');
}
アクティビティ:
function club()
{
return $this->belongsTo('Club');
}
function activityType()
{
return $this->hasMany('ActivityType');
}
アクティビティの種類:
function activities()
{
return $this->belongsToMany('Activity');
}
たとえば、クラブ フーには「トライアスロン」という 1 つのアクティビティがあり、そのアクティビティには「水泳」、「ランニング」、および「サイクリング」というアクティビティ タイプがあります。
これで十分ですが、クラブ ページに ActivityTypes のリストを表示する必要があります。基本的には単なるリストです。したがって、関連するすべてのアクティビティの ActivityTypes を取得する必要があります。
これは、Club モデルのインスタンスを受け取るコントローラー メソッドから行うことができます。
$data = $this->club->with(array('activities', 'activities.activityTypes'))->find($club->id)
これにより、関連するすべてのアクティビティと、それらに関連する ActivityTypes を含むオブジェクトが取得されます。また、十分に公平です。しかし、さらにフィルタリングを適用する必要があります。アクティビティは適切なステータスではない可能性があります (ドラフト エントリとして DB にあるか、有効期限が切れている可能性があります)。そのため、ライブで将来のアクティビティの ActivityTypes のみを取得できる必要があります。
この時点で私は迷っています...このユースケースを処理するための提案はありますか?
ありがとう