updateOrCreate在Laravel Eloquent中不起作用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了updateOrCreate在Laravel Eloquent中不起作用相关的知识,希望对你有一定的参考价值。
我想更新或创建模型。它根本不起作用。
这是我的代码:
foreach ($ProfileRequest as $fieldname => $value){
ProfileRequest::updateOrCreate(['sm_id' => $uid, 'field_name' => $fieldname],
[
'sm_id' => $uid,
'field_name' => $fieldname,
'value' => $value
]);
}
这适用于插入:
foreach ($ProfileRequest as $fieldname => $value) {
$req = new ProfileRequest;
$req->chef_id = $uid;
$req->field_name = $fieldname;
$req->value = $value;
$req->save();
}
答案
由于您正在处理批量更新,因此需要在模型中指定可填写字段。把它放在你的模型上
protected $fillable = ['field_name','value'];
另一答案
像这样更改你的代码
foreach ($ProfileRequest as $fieldname => $value){
ProfileRequest::updateOrCreate(
[
'sm_id' => $uid
],
[
'field_name' => $fieldname,
'value' => $value
]
);
}
避免重复这些字段。如果以某种方式,我的代码不适合你,请在这里检查自己的函数定义:https://laravel.com/api/5.4/Illuminate/Database/Eloquent/Builder.html#method_updateOrCreate
另一答案
这有效
foreach ($ProfileRequest as $fieldname => $value){
ProfileRequest::firstOrNew(array('sm_id' => $uid, 'field_name' => $fieldname));
$chefReq->sm_id = $uid;
$chefReq->field_name = $fieldname;
$chefReq->value = $value;
$chefReq->save();
}
以上是关于updateOrCreate在Laravel Eloquent中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
updateOrCreate - Laravel 中的批量分配异常
即使我在 laravel 中使用 updateorcreate 方法,为啥还要复制数据
updateOrCreate在Laravel Eloquent中不起作用
PHP Laravel,方法 updateOrCreate 的替换