Вызов неопределенных прав доступа к функциям () - PullRequest
0 голосов
/ 02 октября 2019

Я создал пользовательские роли и разрешения, используя Laravel 5.8. я правильно создал пользователей и роли, но когда я создаю модель модели «многие ко многим» между разрешениями и ролями, произошла ошибка, в результате которой было получено сообщение «Вызов неопределенных полномочий ()». Я создал метод getPermissions () для получения всех разрешений в соответствии с идентификатором роли. Но также Laravel сказал, что метод должен быть статичным. Я не знаю, в чем причина. почему метод отношений permissions () не работает?

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Support\Facades\Auth;

class Role extends Model
{
   public function users()
   {
    return $this->belongsToMany('App\Models\AdminUser', 'role_user', 'role_id', 'user_id');
   }

public function permissions()
{
    return $this->belongsToMany('App\Models\Permission', 'permission_role', 'role_id', 
    'permission_id');
}

public static function getPermissions()
{   
      if(Auth::guard('adminuser')->check()){

          $permissions = "Dashboard, Appointments, Customer Records"; 
          $admin_user_id = Auth::guard('adminuser')->user()->id;

          $role_id = 1;//roles()->select('id')->where('roles.id', $admin_user_id)->first();
          $per = permissions()->select($permissions)->where('permissions.id', $role_id)->first();

          return $per;
      }
}
}

Заранее спасибо!

1 Ответ

0 голосов
/ 02 октября 2019

permissions() - это метод экземпляра, а не метод класса. Поэтому вы должны вызывать его для экземпляра этого класса.

Внутри getPermissions() метода, изменить:

$per = permissions()->select($permissions)->where('permissions.id', $role_id)->first();

на

$per = $this->permissions()->select($permissions)->where('permissions.id', $role_id)->first();

permissions() cannне будет статичным, поскольку он вызывает другой метод экземпляра ($this->belongsToMany())

Edit

Мое плохое, я не видел, чтобы getPermissions был статическим.

Вы должны удалить ключевое слово static из getPermissions(). Во всяком случае, там происходит много смешивания. Вы используете статические методы для доступа к методам экземпляра, и это неправильно.

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