Laravel:在模型类中实现方法的最佳方法是什么

时间:2018-05-24 08:30:14

标签: php laravel laravel-5 design-patterns solid-principles

我的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原则方面实现此类功能的最佳方式。

任何帮助都将不胜感激。

1 个答案:

答案 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);
}