Получить список разрешений пользователя

Я пытаюсь получить все разрешения, которые есть у пользователя.

Модель разрешений

public function roles()
{
    return $this->belongsToMany("App\Models\Role");
}

Образец для подражания

public function users()
{
    return $this->belongsToMany('App\Models\User');
}

public function permissions()
{
    return $this->belongsToMany("App\Models\Permission");
}

Модель пользователя

public function roles()
{
    return $this->belongsToMany('App\Models\Role', 'role_user', 'user_id', 'role_id');
}

Мне нужны все разрешения, которые есть у этого пользователя.

Может ли пользователь иметь разрешение viva user Permissions

Стоит ли изучать 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
586
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вам нужно написать что-то подобное в вашем контроллере.

$users = User::with(['roles', 'roles.permissions', 'permissions'])->get();

Это вернет все разрешения от roles и permissions.

Вид:

foreach($user->roles as $role) {
       foreach($role->permissions as $permission){
          {{ $permission->name }}
       }
    }

чтобы получить все разрешения, которые есть у пользователя, вы можете просто запустить

$users = User::with(['roles.permissions'])->get();

Чтобы затем использовать разрешения, вам нужно перебрать роли следующим образом:

foreach($user->roles as $role) {
   var_dump($role->permission);
}

Работает нормально

$users = User::with(['roles.permissions'])->get()->find(2);

Выход

 {
        "status": false,
        "response": {
            "errors": {
                "id": 2,
                "vender_id": 1,
                "name": "zubair",
                "email": "[email protected]",
                "email_verified_at": null,
                "created_at": "2019-06-17 08:11:25",
                "updated_at": "2019-06-17 08:11:25",
                "roles": [
                    {
                        "id": 1,
                        "vender_id": 1,
                        "name": "product-manager",
                        "display_name": "Product Manager",
                        "description": "Product Manager",
                        "created_at": "2019-06-17 08:11:56",
                        "updated_at": "2019-06-17 08:11:56",
                        "pivot": {
                            "user_id": 2,
                            "role_id": 1
                        },
                        "permissions": [
                            {
                                "id": 1,
                                "name": "add-role",
                                "display_name": "Add Role",
                                "description": "Add Role",
                                "created_at": "2019-06-17 08:20:09",
                                "updated_at": "2019-06-17 08:20:09",
                                "pivot": {
                                    "role_id": 1,
                                    "permission_id": 1
                                }
                            }
                        ]
                    }
                ]
            }
        }
    }

Но когда я пытаюсь получить доступ к разрешениям Свойство [разрешения] не существует в этом экземпляре коллекции. в Collection.php

Вам нужно пройти foreach роли и foreach разрешение роли

mare96 17.06.2019 15:49

Допустим, ваша иерархия UserhasManyRole и RolehasManyPermission.

Тогда ваши отношения должны быть установлены так в моделях.

Модель пользователя

public function roles() {
   return $this->hasMany('App\Models\Role`);
}

Образец для подражания

public function permissions() {
   return $this->hasMany('App\Models\Permission`);
}

Чтобы получить разрешения для пользователя

User::find(1)->load('roles.permissions')

Вы можете использовать "with("permission")" в отношениях между пользователем и ролями: public function roles() { return $this->belongsToMany('App\Models\Role')->with("permissions"); }

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