метод модели laravel для проверки условия типа hasRole ([‘admin’, ‘superadmin’)?

Я пытаюсь авторизации Laravel, и мне нужен метод на модели пользователя, который проверяет условие и возвращает логическое значение!
например?

$user->hasRole(['superadmin']); // should return true/false

и в модели:

class User extends Model{
/*****
*****
*****/
public function roles()
{
return $this->hasMany('App\Role');
}

public function hasRole($roles)
{
// some validation and return boolean
}
}

Как мне сделать это с помощью моделей Laravel? Есть ли способ?

2

Решение

public function hasRole($roles)
{
return !$this->roles->pluck('role_column')->intersect($roles)->isEmpty();
}

Не забудьте изменить ‘role_column’

1

Другие решения

Поскольку у вас есть массив строк, и я предполагаю, что у ваших ролей есть имена, вы можете сделать это с помощью простого SQL-запроса.

public function hasRole($roles) {
return $this->roles->whereIn('role', $strings)->exists();
}
0

По вопросам рекламы [email protected]