$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
$model = $this->getModel(); if ($model->exists) { $this->roles()->sync($roles, false); $model->load('roles'); } else { $class = \get_class($model); $class::saved( function ($object) use ($roles, $model) { if ($model->getKey() != $object->getKey()) { return; } $model->roles()->sync($roles, false); $model->load('roles'); } ); }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.