Мне нужна помощь с запросом результата связи между моделями.Определены две модели: Пользователь и Роль модель.
Пользователь:
public function roles()
{
return $this->belongsToMany('App\Role', 'role_users');
}
public function hasAccess(array $permissions) : bool
{
foreach ($this->roles as $role) {
if ($role->hasAccess($permissions)) {
return true;
}
}
return false;
}
public function inRole(string $slug)
{
return $this->roles()->where('slug', $slug)->count() == 1;
}
Роль:
public function users()
{
return $this->hasMany('App\User', 'role_users');
}
public function hasAccess(array $permissions) : bool
{
foreach ($permissions as $permission) {
if ($this->hasPermission($permission)) {
return true;
}
}
return false;
}
private function hasPermission(string $permission) : bool
{
return $this->permissions[$permission] ?? false;
}
Также определена сводная таблица с именем role_users
.В базе данных roles
несколько ролей предопределены заранее (администратор, редактор, автор).
Я хочу запросить пользователей по их ролям, например,
$editors = App\User::roles(2)->orderBy('name', 'asc')->get()
где в базе данных roles
редактор id
равен 2. Я получил ошибку
PHP Deprecated: Non-static method App/User::roles()
Как решить эту проблему?Примечание: я использую Laravel 5.6 и новичок в Laravel и фреймворке.Я пытался сослаться на документы , но это меня смутило.
Заранее спасибо.