Где писать запросы в Laravel? В модели, контроллере или репозитории?
Возникли следующие вопросы связанные с использование запросов, Eloquent ORM:
1. Где лучше всего работать с запросами Eloquent ORM в Laravel? В примерах документации конкретно нечего не сказано, пишут и в методах контроллеров и в методах моделей.
2. Если же запросы писать не в модели, то как использовать QUERY SCOPES, если вообще реально это?
3. Если использовать репозитории, то что писать в репозитории, а что в методах контроллеров?
4. И вообще, как правильно организовать структуру приложения на Laravel? Где можно, для начинающего, об этом почитать?
Смысл ORM как раз в том, что вы описываете поля моделей и отношения между ними и не думаете о запросах - они строятся автоматически. Поэтому не очень понятна суть ваших вопросов.
Алексей Уколов: Значит например $categories = Category::all() - это не запрост (это ORM). Но где тогда писать правильнее этот код? В контроллерах или в моделях?
Если запрос вида Post::with('author'), то можно в контроллере, если запросы сложные, то выносить их в сервисы.
В моделях писать запросы не нужно, модели для настроек связей, скоупов и тп.
как использовать QUERY SCOPES
Query scopes можно использовать в любом месте. Например: Post::with('author')->customConditions()->get();