Laravel中的Update方法不更新记录
我需要更新数据库记录。首先,我通过它的主键找到记录,然后过滤请求中的项,最后调用upadate方法。嗯,什么也没发生 控制器Laravel中的Update方法不更新记录,laravel,Laravel,我需要更新数据库记录。首先,我通过它的主键找到记录,然后过滤请求中的项,最后调用upadate方法。嗯,什么也没发生 控制器 $rec = \App\Contact::findOrFail($id); $rec->update($request->only('first','last','city','region','zip')); 普通$request值如下所示: { "_token": "myeF9lZOQBB8oH4h1ogUoZe4aEeEPxCw4
$rec = \App\Contact::findOrFail($id);
$rec->update($request->only('first','last','city','region','zip'));
普通$request值如下所示:
{
"_token": "myeF9lZOQBB8oH4h1ogUoZe4aEeEPxCw49J4qFtU",
"_method": "PATCH",
"first": "asdf",
"last": "egsrsdeeee",
"city": "erg",
"region": "wfd",
"zip": "23443",
"phones": [
"25313",
"25313234",
"25313234",
"2531323523"
],
"emails": [
"jid@se.cz"
],
"addresses": [
"Petrovka 123",
"dalsi vole 12"
]
}
我做错了什么?似乎应该可以工作。这可能与质量分配或映射错误有关,请尝试手动分配值
$rec=\App\Contact::findOrFail($id);
$rec->first=$request->first;
$rec->last=$request->last;
$rec->city=$request->city;
$rec->region=$request->region;
$rec->zip=$request->zip;
$rec->save();
或者禁用模型中的批量分配保护Contact.php
protected$guarded=[];//约洛!
希望这有帮助我们能看看你们的模型吗?调用
$request->only()
另外,您确定update方法返回true吗?如果转储输出,是否可以显示输出:
$array = $request->only('first','last','city','region','zip');
\var_dump($rec->update($array));
最后,您还可以调用$request->toArray()
:
由于您的模型已经知道它应该填充什么,如$filleble
属性所示,因此您也就不再需要知道您应该在这个特定类中管理哪些索引,而只需要让模型完成它们的任务 在模型Contact.php
的顶部添加以下内容:
protected $fillable = [
'first',
'last',
'city',
'region',
'zip',
];
这将允许您仅批量分配这些字段。我知道这样做是可能的。我的目标是以更优雅的方式实现同样的结果。更新了我的答案,我个人不推荐优雅的wayWell,如果我dd
$rec
变量,它似乎已更新,但当我检查数据库时,没有什么新的内容-它保留了旧数据。您的模型上有这个吗<代码>受保护的$fillable=['first','last','city','region','zip']代码>
protected $fillable = [
'first',
'last',
'city',
'region',
'zip',
];