@Garde2

Где в Laravel размещать повторяющиеся запросы?

Добрый день. Иногда возникают случаи, когда SQL запрос почти полностью или полностью совпадает с тем, который использовался раньше. Где разместить данный код и как лучше его переиспользовать?

Сейчас, я в модели пишу примерно такой код

public static function selectDataReport($request)
    {
        return self::select('')
            ->leftJoin('')
            ->leftJoin('')
            ->with('test')
            ->where('id', '')
    }


А в контроллере уже вызываю
$data = MyClass::selectDataReport($request);
И работаю с этим запросом дальше

Является ли данный способ правильным? И как можно лучше это организовать?
  • Вопрос задан
  • 328 просмотров
Пригласить эксперта
Ответы на вопрос 2
@danforth
То что вы описали, похоже на модель, только нужно передавать внутрь не запрос, а параметры, например $id.

По поводу того, где хранят модели, написано тут:
Models typically live in the app directory, but you are free to place them anywhere that can be auto-loaded according to your composer.json file.

Другими словами, можно хранить в папке app, но вы в праве использовать и другое место для ваших моделей.
Ответ написан
@iljaGolubev
Если одна модель - метод в модели или scope.
Если это для разных моделей, то мой выбор - копипаст. Ну или trait в модели.
Если же для этих разных моделей строятся однотипные отчеты, то я использую
class ReportRepository{
    function __construct(ReportableModelInterface $model){}
    function getSimpleReportData($id){}
    function getCustomReportData($id, $any){}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы