我有以下设置:
俱乐部提供特定类型的活动,因此有 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');
}
例如,Club Foo 可能有一个名为“Triathlon”的 Activity,并且该 Activity 具有 ActivityTypes“游泳”、“跑步”和“自行车”。
这很公平,但我需要在俱乐部页面上显示 ActivityTypes 列表 - 基本上只是一个列表。所以我需要获取所有相关活动的 ActivityTypes。
我可以从接收 Club 模型实例的控制器方法中这样做:
$data = $this->club->with(array('activities', 'activities.activityTypes'))->find($club->id)
这让我得到了一个包含所有相关活动以及与之相关的活动类型的对象。也足够公平。但我需要应用更多过滤。活动可能不处于正确状态(它可能在数据库中作为草稿条目或已过期),因此我需要能够仅获取活动的活动类型以及未来活动。
在这一点上我迷路了......有人对处理这个用例有什么建议吗?
谢谢