Отказываемся от сущностей 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(/** */);
}
}