P粉2168079242023-09-06 19:18:57
问题是,如果模型存在,则 allocateRole 和syncRole 中的 spatie 有效
我的意思是 Laravel 模型具有“存在”属性
vendor\spatie\laravel-permission\src\Traits\HasRoles.php 中有一些来自 allocateRole 函数的代码
syncRoles 是 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'); } ); }
因此 DB::table('users')->insert($arrayWithUsersData);
不要更改模型中的参数“exists”,因为它适用于原始数据
所以我必须切换为一一创建用户并保存它们
$user = new User($userData); $user->save();
现在 Spatie 创建应有的关系。