Я работаю над существующим приложением laravel У меня много запросов, все запросы написаны в построителе запросов laravel, теперь я хочу добавить еще один оператор where site_id
(столбец), чтобы отфильтровать записи по всему приложению. Я не хочу переписывать каждый запрос, я просто хочу общий способ избавиться от этой проблемы. Мои запросы приложений написаны таким образом.
Laravel Query Builder
DB::table('users')->where('id', $user_id)->get()
Модель Query Builder
AccountTag::join('ad as a', 'a.id', '=', 'abs.account_id')
->select('AccountTag.*', 'a.company_name')
->where(array("account_id" => 'xx'))
->get()
->toArray();
Можем ли мы иметь какой-либо переопределенный метод, который мы помещаем в базовый класс и добавляем этот фильтр для получения необходимых данных?
Как насчет глобальных или локальных областей?
https://laravel.com/docs/5.7/eloquent#global-scopes
смотреть на Применение глобальных областей Вы можете указать конкретным моделям использовать глобальную область видимости.
Вы можете указать конкретные запросы, чтобы исключить область, см. Удаление глобальных областей
Других решений пока нет …