2016-03-11 2 views
2

У меня есть глобальная область действия, которая исключает дезактивированных пользователей из запроса (1 - Активировано, 0-Деактивировано). Но у меня возникают проблемы с извлечением этих дезактивированных пользователей. Я хочу создать функцию, которая делает то же самое, что и метод withTrashed(). Но я не могу понять, как это сделать. Что я должен писать в методе удаления?Laravel 5.1 Глобальная область

UsersScope класс

class UsersScope implements ScopeInterface 
{ 
    public function apply(Builder $builder, Model $model) 
    { 
     return $builder->where('status', '=', 1); 
    } 

    public function remove(Builder $builder, Model $model) 
    { 

    } 
+0

Я думаю, что это прямо вперед здесь: https://laravel.com/docs/5.0/eloquent#global-scopes foreach ((array) $ query-> wheres as $ key => $ where) { // Если предложение where является ограничением даты мягкого удаления, мы удалим его из // запрос и сбросьте ключи на местах. Это позволяет этому разработчику // включать удаленную модель в набор результатов отношений, который ленивый. if ($ this-> isSoftDeleteConstraint ($ where, $ column)) { unset ($ query-> wheres [$ key]); $ query-> wheres = array_values ​​($ query-> wheres); } } – hungneox

ответ

1

Вы можете попробовать это:

public function remove(Builder $builder, Model $model) 
{ 

    $query = $builder->getQuery(); 
    $query->wheres = collect($query->wheres)->reject(function ($where) { 
     return $where['column'] = 'status'; 
    }) 
    ->values()->all(); 
} 

Затем используйте withoutGlobalScope метод удаления рамки:

$users = User::withoutGlobalScope(UsersScope::class)->get(); 
Смежные вопросы