Maison > Questions et réponses > le corps du texte
P粉2168079242023-09-06 19:18:57
Le problème est que le spatie dans allocateRole et syncRole fonctionne si le modèle existe
Je veux dire que les modèles Laravel ont la propriété "existe"
vendorspatielaravel-permissionsrcTraitsHasRoles.php contient du code de la fonction allocateRole
syncRoles est un wrapper pour 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'); } ); }
Par conséquent DB::table('users')->insert($arrayWithUsersData);
ne modifiez pas le paramètre "existe" dans le modèle car il s'applique aux données d'origine
J'ai donc dû passer à la création d'utilisateurs un par un et les enregistrer
$user = new User($userData); $user->save();
Maintenant, Spatie crée les relations que vous méritez.