Laravel добавляет глобальное условие к красноречивому

Я получаю invoices на нескольких страницах, используя один запрос.

Код запроса:

$invoices = ImportInvoice::withSupplier() -> withCreatedByAndUpdatedBy() -> orderedName() -> paginate(10);

ПРОБЛЕМА:

Я добавил поле approve в базу данных, которое имеет значение boolean независимо от того, одобрен ли счет-фактура (1) или не одобрен (0).

Итак, теперь мне нужно добавить where('approve', 1), чтобы получить утвержденные счета.

Проблема в том, что я буду редактировать этот красноречивый на нескольких контроллерах.

Вопрос:

Есть ли способ добавить это условие в модель? Плюс иногда хочется вернуть счета Не одобрено.

Он похож на Мягкое удаление, созданный Laravel.

Soft delete не возвращается при вызове запроса, но если я хочу его вызвать, я просто вызываю функцию withTrashed().

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
0
1 733
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

да, вы можете сделать так, откройте свою ImportInvoice модель

первый импортировать (добавить) этого класса..

use Illuminate\Database\Eloquent\Builder;

и добавьте этот метод boot

 protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('approve', function (Builder $builder) {
            $builder->where('approve',  1);
        });
    }

теперь по умолчанию получаем утвержденные счета

 ImportInvoice::get()

и вы хотите утвердить и не утвердить счета-фактуры, тогда сделайте это

ImportInvoice::withoutGlobalScope('approve')->get();

для получения дополнительной информации прочитайте этот статья

Спасибо, это было именно то, что я ищу.

AE1995 13.07.2019 12:31

Другие вопросы по теме