【发布时间】:2018-12-01 14:18:25
【问题描述】:
我有一个非常简单的模型:
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 = ['*'];
}
我没有收到任何错误,但我的条目为空。
为什么?
【问题讨论】:
-
可填充属性是否接受通配符?
-
好问题,我也试过
['id']。如果我必须提及模型中的每一列,我也一样。 -
但您还要填写名字、姓氏和电话号码。
-
但是我没有做批量作业:(
-
我认为您不应该在该查询中使用 id 。因为第一个数组使 updateOrCreate 设置了具有自动增量属性的 id 列(我猜)。您应该搜索名字和姓氏,或者单独查询数据库。
标签: php laravel laravel-5 eloquent mass-assignment