Laravel - как получить строки разрешений из другой таблицы, установленной в таблице ролей

Laravel - как получить строки разрешений из другой таблицы, установленной в таблице ролей

27.01.2020 01:34:18 Просмотров 23 Источник

Я очень новичок в laravel и пытаюсь получить все строки разрешений из таблицы permissions, которая устанавливается в поле roles-permissionкак json

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

public function index()
{
    $roles = Role::all();

    foreach ($roles as $role) {
        $permissions[] = Permission::whereIn('id', json_decode($role->permission))->get();
    }

    dd($permissions);

}

Таблица разрешений

enter image description here

Таблица ролей

enter image description here

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59929385/laravel-how-to-get-rows-of-permissions-from-another-table-set-in-roles-table#comment105980961_59929385
Вы имеете в виду сводную таблицу? Тогда как я могу связать его с ролями?
https://stackoverflow.com/questions/59929385/laravel-how-to-get-rows-of-permissions-from-another-table-set-in-roles-table#comment105980987_59929385
Да, использование сводных таблиц помогает с правильными данными
https://stackoverflow.com/questions/59929385/laravel-how-to-get-rows-of-permissions-from-another-table-set-in-roles-table#comment105981074_59929385
Да, это была бы хорошая установка!

Ответы - Laravel - как получить строки разрешений из другой таблицы, установленной в таблице ролей / Laravel - How to get rows of permissions from another table set in roles table

Является ответом!
MaartenDev

27.01.2020 01:42:56

Рекомендуется извлечь поле разрешения в отдельную таблицу. Это позволит реализовать ограничения, гарантирующие, что упомянутый идентификатор разрешения и идентификатор роли действительно существуют. Возможным именем таблицы может быть: permission_roleсо следующими столбцами: permission_idи role_id.

Миграция может быть настроена следующим образом:

Schema::create('permission_role', function (Blueprint $table) {
    $table->unsignedBigInteger('permission_id');
    $table->unsignedBigInteger('role_id');

    $table->foreign('permission_id')->references('id')->on('permissions');
    $table->foreign('role_id')->references('id')->on('roles');
});
https://stackoverflow.com/questions/59929385/laravel-how-to-get-rows-of-permissions-from-another-table-set-in-roles-table/59929525#comment105981063_59929525
Итак, как насчет того, чтобы я сделал такие таблицы, как roles, permissionspermission_role, role_user? С помощью этого я смогу получить все разрешения для роли, назначенной пользователю?
https://stackoverflow.com/questions/59929385/laravel-how-to-get-rows-of-permissions-from-another-table-set-in-roles-table/59929525#comment105981214_59929525
Позвольте мне попробовать этот подход. Таким образом, я могу использовать многие ко многим или один ко многим отношениям. правильно?
https://stackoverflow.com/questions/59929385/laravel-how-to-get-rows-of-permissions-from-another-table-set-in-roles-table/59929525#comment105981264_59929525
Это зависит от того, могут ли разные роли иметь одинаковые разрешения использовать Many to Many, если разрешения не более чем используются одним One to manyможет быть использован @CodeLover
Закрыть X