@shasoft

Можно ли сделать глобальный хук чтобы ко всем запросам в БД добавлялось условие where('mandt','=','120')?

Хочу в БД ко всем таблицам добавить отдельное поле mandt, в котором будет идентификатор сайта и чтобы по этому полю определять для какого сайта выбираются данные. Можно ли как-то добавить глобальный хук чтобы условие where('mandt','=','120') добавлялось ко всем запросам к БД?

p.s.да, я в курсе что для скорости лучше отдельные БД, но в данном случае нагрузка минимальная и это не критично.
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
@Kostik_1993
PHP Backend Developer, Laravel, Yii, Vue, Node.js
У тебя в папке App есть Model.php, если нет тогда нужно его создать, но по идеи он есть и все твои модели должны его наследовать

В нем тебе нужно прописать global scope запрос
<?php
namespace App;

use Illuminate\Database\Eloquent\Model as Eloquent;

abstract class Model extends Eloquent
{
    public static function boot()
    {
        parent::boot();
        static::addGlobalScope('mandt', function (\Illuminate\Database\Eloquent\Builder $builder) {
            $builder->where('mandt', '=', '120');
        });
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
orlov0562
@orlov0562
I'm cool!
Нужно создать свой класс наследник модели и в нем переопределить основные методы, типа того
class MyModel extends Illuminate\Database\Eloquent\Model {
    public function save(...){
        this->where(....);
        parent::save();
    }
}

внутрь методов добавить нужные модификации, дальше все создаваемые модели наследовать от нового класса. Идея думаю понятна - классика ООП.
Ответ написан
@shasoft Автор вопроса
Мне пришла только идея по аналогии с SoftDeletes сделать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы