我有一个非常简单的模型:
class Employee extends \Eloquent
{
}
我想做的是将本地数据与存储在远程服务器中的数据同步。在我的MySQL中,我有
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`)
因此,我敢肯定,如果我在id
上比赛,我将永远不会进行大规模分配。
所以当我这样做时:
foreach((new RemoteEmployee())->all() as $emp) {
Employee::updateOrCreate(['id' => $emp['id']], [
'firstname' => $emp['id'],
'lastname' => $emp['lastname'],
'phone' => $emp['phone']
]);
}
我不应该收到此错误:
Add [id] to fillable property to allow mass assignment on [App\Models\Employee].
无论如何,如果我按照以下方式修改模型:
class Employee extends \Eloquent
{
protected $fillable = ['*'];
}
我没有收到任何错误,但我的输入为空。
为什么?
答案 0 :(得分:1)
首先从字段中排除ID
第二,如果要允许所有字段使用protected $guarded = [];
。
答案 1 :(得分:0)
一旦您在$fillable
中设置了至少一项,Eloquent将停止引发批量分配异常。但是,它将忽略$fillable
中未提供的用于批量分配的任何字段。因此,由于'*'
中Eloquent不支持$fillable
,因此它实际上忽略了一切。