Как удалить любую роль с помощью removeRole() в laravel?

#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. все -> одно имя роли.уведомление -> другое имя роли.