Условия запросов (Scope)

0
Условия запросов (Scope)

Каждый scope — это обычный метод, который начинается с префикса scope. Именно по префиксу ORM понимает, что это scope. Внутрь scope передаётся запрос, на который можно навешивать дополнительные условия.


class Story extends Model
{
    public function scopeActive(Builder $query): Builder
    {
        return $query->where('active', true);
    }
}

Использование:

$stories = Story::query()
    ->active()
    ->paginate($perPage);

Динамические условия
Некоторые scope зависят от параметров, передающихся в процессе составления запроса. Для этого достаточно описать эти параметры внутри scope после параметра $query:


class Story extends Model
{
    public function scopeOfType(Builder $query, string $type): Builder
    {
        return $query->where('type', $type);
    }
}

Использование:

$stories = Story::query()
    ->ofType('new')
    ->paginate($perPage);
0
276

Комментарии 0

Комментариев еще нет!
Для выполнения действия необходимо авторизоваться!
Активность
0
В будущем возможно сделаю, пока не получается время выделить 08.09.2023 18:50
0
Вот ещё бы модерацию к комментариям к статьям 02.09.2023 19:39
0
crew, это всего лишь один из способов, чтобы не разрывать цепочку запросов
Можно делать как ты и написал, кому как нравится 23.06.2023 16:49
0
Спорное решение.
Без нее конструкция кажется более читаема (точно всем будет точно понятна), да и причины реализации не ясны - не кажется что без нее написать были какие-то трудности.
...
23.06.2023 12:03
0
Хорошая новость! 20.06.2023 17:28
+1
Самый лучший web-мотор сразу прямо после wap-мотора :respekt 29.08.2022 06:27
+1
Вот это уже совсем другое дело :klass 06.09.2022 10:14
+1
Со временем постараюсь сделать админские настройки 28.12.2022 02:26
+1
Иногда я спрашиваю себя - когда же я освою php, ответ приходит сам собой:

Наверно! В следующей жизни! Когда я стану кошкой, на - на, на на 04.01.2023 03:28
+1
Сейчас хочу сделать чтобы можно было прокинуть роуты в контроллеры, чтобы можно было указывать не ссылки типа /stories имя роута, чтобы легко можно было поменять главную на список статей
Остальное... 07.03.2023 01:42