Laravel - как получить строки разрешений из другой таблицы, установленной в таблице ролей
Я очень новичок в 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);
}
Таблица разрешений
Таблица ролей
У вопроса есть решение - Посмотреть?

Источник

Вы имеете в виду сводную таблицу? Тогда как я могу связать его с ролями?
Источник

Да, использование сводных таблиц помогает с правильными данными
Источник

Источник

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

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');
});

Итак, как насчет того, чтобы я сделал такие таблицы, как
roles
, permissions
permission_role
, role_user
? С помощью этого я смогу получить все разрешения для роли, назначенной пользователю?

Позвольте мне попробовать этот подход. Таким образом, я могу использовать многие ко многим или один ко многим отношениям. правильно?

Это зависит от того, могут ли разные роли иметь одинаковые разрешения использовать
Many to Many
, если разрешения не более чем используются одним One to many
может быть использован @CodeLover
Помочь в развитии проекта: