Laravel: @can выдает ошибку в построителе запросов? - PullRequest
0 голосов
/ 11 мая 2018

В моем блейд-файле есть следующий код:

@if(Auth::user()->isLeader())
 <input type='hidden' name='leader' value='{{ Auth::id() }}'>
@endif

Это работает.

Я хочу сократить код с помощью can , поэтому я создал защиту в AuthServiceProvider:

public function boot()
{
     $this->registerPolicies();

     Gate::define('isLeader', function ($user) {
        return $user->isLeader();
     });
}

и изменил файл блейда на:

@can('isLeader')
   <input type='hidden' name='leader' value='{{ Auth::id() }}'>
@cannot

Если я сейчас открою блейд-файл, я получаю следующую ошибку:

«Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: isLeader ()»

enter image description here

Почему это происходит?

Редактировать: Это моя isLeader функция:

public function isLeader()
{
  $leader = static::where('id','=',$this->id)->leader();
  if($leader->count() == 0){
    return false;
  }

  return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...