$guardName,'name'=>$roleN">
Dalam Laravel 9 Saya cuba menambah peranan kepada pengguna
Spatie baru sahaja memproses semuanya tanpa ralat, tetapi dalam pangkalan data hubungan antara peranan dan pengguna tidak muncul dalam model untuk jadual "model_has_role"
$roleName = 'MyRole'; $guardName = 'MyGuard'; $roleObj = Role::create(['guard_name' => $guardName, 'name' => $roleName]);
$user = new User($userDatas);
$arrayWithUsersData = []; foreach($pengguna sebagai $pengguna) { if($pengguna !== NULL) { $arrayWithUsersData[] = $user->getAttributes(); } }
DB::table('users')->insert($arrayWithUsersData);
Akhirnya saya mencuba sebarang cara yang mungkin untuk menetapkan peranan dalam setiap $pengguna Suka:
$user->assignRole($roleName); $user->assignRole($roleName, $guardName); $user->assignRole([$roleName, $guardName]); $user->assignRole($myRole); $user->assignRole($myRole, $guardName); $user->assignRole([$myRole, $guardName]); $user->syncRoles($myRole); $user->syncRoles($myRole, $guardName); $user->syncRoles([$myRole, $guardName]);
Tetapi tiada ralat diberikan tetapi masih tiada perhubungan diwujudkan
Masalahnya ialah spatie dalam allocateRole dan syncRole berfungsi jika model wujud
Maksud saya model Laravel mempunyai sifat "wujud"
vendorspatielaravel-permissionsrcTraitsHasRoles.php mempunyai beberapa kod daripada fungsi allocateRole
syncRoles ialah pembalut untuk allocateRole
Oleh itu
DB::table('users')->insert($arrayWithUsersData);
jangan ubah parameter "wujud" dalam model kerana ia terpakai pada data asalJadi saya terpaksa bertukar kepada mencipta pengguna satu demi satu dan menyimpannya
Kini Spatie mewujudkan perhubungan yang anda layak.