Laravel - Как получить строки разрешений из другой таблицы, заданной в таблице ролей - PullRequest
1 голос
/ 27 января 2020

Я очень плохо знаком с 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

1 Ответ

0 голосов
/ 27 января 2020

Рекомендуется извлечь поле разрешения в отдельную таблицу. Это позволило бы реализовать ограничения, чтобы гарантировать, что ссылочный идентификатор разрешения и идентификатор роли действительно существуют. Возможное имя таблицы: 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');
});
...