Laravel и spatie / разрешение laravel

какой лучший или обычный способ удалить все роли с пользователя?

Я пытался

$roles = $user->getRoleNames(); $user->removeRole($roles);

Return value of App\User::getStoredRole() must implement interface Spatie\Permission\Contracts\Role, instance of Illuminate\Support\Collection returned

заранее спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
0
4 194
6

Ответы 6

Из документации ясно видно, что вы можете передать экземпляр Collection в removeRole, так что я думаю, что вы делаете это правильно.

The assignRole, hasRole, hasAnyRole, hasAllRoles and removeRole functions can accept a string, a \Spatie\Permission\Models\Role object or an \Illuminate\Support\Collection object.

Пробовал вот этот $roles = $user->getRoleNames(); $user->removeRole($roles);Return value of App\User::getStoredRole() must implement interface Spatie\Permission\Contracts\Role, instance of Illuminate\Support\Collection returned"

Smoky 10.10.2018 11:36

Я думаю, вам тогда придется перебирать коллекцию, я бы также поднял это на их странице проблем github

Nikola Gavric 10.10.2018 11:56

Сделал вот так $user->removeRole($user->roles->first());

Используйте простой метод Laravel detach, например:

$user->roles()->detach();

Вы также можете удалить все роли, синхронизировавшись с пустым массивом, например.

$user->syncRoles([]);

Я подтвердил, что он работает на версии 5.8.

Это отлично работает даже на Laravel 7

Для ролей: $user->syncRoles([]);

Для разрешений: $user->syncPermissions([]);

Из документации Spatie вы можете найти способ удалить все предыдущие роли и назначить новые роли простым

$user->syncRoles($roles);

Для справки вы можете посетить этот ссылка

Другие вопросы по теме