Я использую Laravel с UserAuth и ролями. Все работает отлично. Теперь я хочу добавить много ролей. Роли должны быть рекурсивными.
Schema::create('role_user', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->unsignedBigInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->unsignedBigInteger('role_id');
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
});
Schema::create('role_role', function (Blueprint $table) {
$table->id();
$table->timestamps();
$table->unsignedBigInteger('parent_id');
$table->foreign('parent_id')->references('id')->on('roles')->onDelete('cascade');
$table->unsignedBigInteger('child_id');
$table->foreign('child_id')->references('id')->on('roles')->onDelete('cascade');
});
$user->roles();
дают мне все роли, где пользователь назначен напрямую.
Пример:
Пользователь в роли Role1 в таблице role_user
Роль 1 в роли Role 2 в таблице role_role
Роль 2 в роли Role 3 в role_role таблица
$user->roles();
Результат - Роль 1.
$user->roles();
Результат должен содержать Роль1, Роль2, Роль3. Не как текст. Это должен быть массив
Я должен манипулировать
public function roles()
{
return $this->belongsToMany(Role::class);
}
Но как?
Очень спасибо.