Отказываемся от сущностей Laravel или как не нарушить принцип DRY

Начал писать проект на Laravel 6.2, но для работы с бд не подходит и не нравиться библиотека Еloquent. Решил писать используя Query Builder, в классах моделей появляется много дублирующего кода типа одинаковых статический where и join'нов. Для этих целей естественно предусмотрены scope, но насколько я понял что архитектура фреймворка позволяет ими пользоваться, только если запросы будут происходить в контролере, ну или к примеру в сервисном слое при статическом вызове модели. Как грамотно реализовать эти самые scope именно в моделях фреймворка? Так как мешать бизнес логику в сервисном слое или строить запросы в контролере нету желания.

class SimpleModel extends Model
{

    public function getSomething())
    {
        return DB::table('simple')
                ->MultiWhere()
                .....
                ->get();
    }

    public function getSomething2()
    {
        return DB::table('simple')
                ->MultiWhere()
                .....
                ->get();
    }

    public function scopeMultiWhere($query)
    {
        return $query->where(/** */)
                    ->where(/**  */)
                    ->where(/** */);
    }
}

Ответы (0 шт):