我的public static function search($season, $week)
{
$filteredGames = Game::with('season', 'week', 'homeTeam', 'awayTeam')
->when($season != null, function ($q) {
return $q->where('season_id', request('season'));
})->when($week != null, function ($q) {
return $q->where('week_id', request('week'));
})
->paginate(15);
return $filteredGames;
}
模型中有一个简单的搜索方法,我已按如下方式实现。
$games = Game::search(request('season'), request('week'));
在像这样的控制器中使用它
{{1}}
看起来效果很好。
我想了解使用静态方法是否是在设计模式和SOLID原则方面实现此类功能的最佳方式。
任何帮助都将不胜感激。
答案 0 :(得分:2)
感谢IFR上面的评论我改变了我的实现,我认为这是Laravel的最佳方法。
public function scopeOfFilter($query, $season, $week)
{
return $query->with('season', 'week', 'homeTeam', 'awayTeam')
->when($season != null, function ($q) {
return $q->where('season_id', request('season'));
})->when($week != null, function ($q) {
return $q->where('week_id', request('week'));
})
->paginate(10);
}