Laravel Model Override Где пункт?
Я работаю над существующим приложением 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();
Можем ли мы иметь какой-либо переопределенный метод, который мы помещаем в базовый класс и добавляем этот фильтр для получения необходимых данных?
1 ответ
Как насчет глобальных или локальных областей?
https://laravel.com/docs/5.7/eloquent
Посмотрите на применение глобальных областей Вы можете указать конкретным моделям использовать глобальную область.
Вы можете указать конкретные запросы, чтобы исключить область, см. Удаление глобальных областей