Laravel: Каков наилучший способ реализации метода в модельном классе? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть простой метод поиска в моей Game модели, и я реализовал его, как показано ниже.

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'));

Похожеон отлично работает.

Я хочу узнать, является ли использование статического метода лучшим способом реализовать такую ​​функцию с точки зрения шаблонов проектирования и принципов SOLID.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 мая 2018

Благодаря приведенному выше комментарию 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);
}
...