【发布时间】:2013-08-05 16:26:36
【问题描述】:
我有以下设置:
俱乐部提供特定类型的活动,因此有 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 列表 - 基本上只是一个列表。所以我需要获取所有相关Activity的ActivityTypes。
我可以从接收 Club 模型实例的控制器方法中这样做:
$data = $this->club->with(array('activities', 'activities.activityTypes'))->find($club->id)
这让我得到了一个包含所有相关活动以及与之相关的活动类型的对象。也足够公平。但我需要应用更多过滤。 Activity 可能处于不正确的状态(它可能在 DB 中作为草稿条目或已过期),因此我需要能够仅获取活动的活动和未来活动的 ActivityTypes。
此时我迷路了……有人对处理这个用例有什么建议吗?
谢谢
【问题讨论】:
标签: laravel laravel-4 eloquent