我有以下设置:过滤渴望加载数据4
俱乐部提供的活动,这是一种特殊类型的,所以3机型的关系:
俱乐部:
function activities()
{
return $this->hasMany('Activity');
}
活动:
function club()
{
return $this->belongsTo('Club');
}
function activityType()
{
return $this->hasMany('ActivityType');
}
ActivityType:
function activities()
{
return $this->belongsToMany('Activity');
}
因此,例如Club Foo可能会有一个名为“Triathlon”的活动,该Activity具有ActivityTypes“游泳”,“跑步”和“自行车”。
这已经够用了,但我需要在Club页面上显示ActivityTypes列表 - 基本上只是一个列表。所以我需要获取所有相关活动的ActivityTypes。
我能做到这一点,像这样从接收的俱乐部模型的实例的控制方法:
$data = $this->club->with(array('activities', 'activities.activityTypes'))->find($club->id)
这让我与有关他们ActivityTypes沿着所有相关活动的对象。也够公平的。但我需要应用更多的过滤。活动可能不是正确的状态(它可能在数据库中作为草稿条目或已过期),所以我需要能够仅获取活动的活动类型,这些活动类型将在现场和未来进行。
在这一点上我迷路了...有没有人有任何建议来处理这个用例?
感谢
谢谢 - 我采用了不同的答案,因为您建议的方法意味着我只能通过activities()模型方法检索活动活动。使用过滤器意味着我还可以获得状态为“挂起”或其他任何状态的人。 –