Реализовал отдельным классом скоуп и подключил его в boot модели
https://laravel.com/docs/6.x/eloquent#global-scopes
все прекрасно работает по всему проекту, теперь мне нужно для одного контроллера этот скоуп отключить, чтоб он не использовался в :
public function update(Post $post, Request $request) {}
public function delete(Post $post) {}
т.е. этот скоуп используется и во внедрении зависимости, а туда добавить условия сложновато.
Пока из идей: в boot контроллера запустить некий статичный метод нужной модели и передать что не нужно использовать скоуп.
/**
* @inheritDoc
*/
protected static function boot(): void
{
parent::boot();
in_array(VisibleScope::class, self::$disabledGlobalScopes) || static::addGlobalScope(new VisibleScope());
}
/**
* @var array
*/
protected static $disabledGlobalScopes = [];
/**
* @param string $scope
*/
public static function disableGlobalScope(string $scope): void
{
static::$disabledGlobalScopes[] = $scope;
}
Может проще вариант есть?