#php #laravel #laravel-5
Вопрос:
У меня есть три модели user, roles,model_has_roles, когда я назначаю какую-либо роль пользователю из таблицы ролей, он создает экземпляр модели в model_has_roles
таблице.Я использую removeRole()
метод laravel для удаления ролей, я даю некоторые подробности о том, какие роли присутствуют в моей базе данных, например (супермаркет, уведомление, все …). он удаляет все роли, кроме notification,all
.
$roleName = implode(' ,',$roleName); // "super-market" or "all"
foreach ($roles->pluck('name')->toArray() as $roleName) {
$user->removeRole($roleName);
}
Теперь, что мне нужно, независимо от роли (любой роли), я хочу удалить эту роль, некоторые из удаляемых ролей и удалить экземпляр модели из model_has_roles
, а некоторые роли не удаляются (например, все, уведомление), пожалуйста, помогите мне исправить эту проблему
Ответ №1:
в laravel нет встроенного пакета laravel для управления ролями и разрешениями, и removeRole()
его нет в laravel (я не знаю, почему вы написали метод removeRole laravel ), есть пакет с именем laravel-permission, который имеет тот же дизайн таблицы, что и у вас. если вы используете этот пакет, вы можете найти документы здесь. если вы пишете свою собственную, попробуйте отладить ее dd()
и поработать, чтобы выяснить, что не так с некоторыми, чтобы они не были удалены.
Ответ №2:
Сначала я получил обратное, вместо этого вы должны использовать explode и переместить первую строку в цикл foreach
foreach ($roles->pluck('name')->toArray() as $roleName) {
$roleName = explode(',',$roleName);
$user->removeRole($roleName);
}
Комментарии:
1. все -> одно имя роли.уведомление -> другое имя роли.