我试图在由laravel生成的users表中进行更新,我收到响应json状态200,但数据没有变化。我尝试:
Route::put('alteraDadosPerfil/{id}', 'Auth\LoginController@alteraDadosPerfil');
function alteraDadosPerfil(Request $request, $id){
User::findOrFail($id)->first()->fill($request->all())->save();
return response()->json('Dados de perfil alterados com sucesso', 200);
}
我还需要做更多事情来更新用户表中的数据吗?
答案 0 :(得分:2)
使用update()
方法:
function alteraDadosPerfil(Request $request, $id){
User::findOrFail($id)->update($request->all());
return response()->json('Dados de perfil alterados com sucesso', 200);
}
在这种情况下,您无需使用first()
方法,findOrFail()
方法将返回一个User。
还要确保将所有字段都放在模型的$fillable
变量中:
$fillable = ['id', etc...]
答案 1 :(得分:0)
findOrFail()
方法返回一个模型,而“ first”则用于收集...
尝试从以下位置更改:
User::findOrFail($id)->first()->fill($request->all())->save();
收件人:
User::findOrFail($id)->fill($request->all())->save();
答案 2 :(得分:-1)
好像您具有JSON主体,因此您必须从原始内容中对其进行解码:
$data = json_decode($request->getContent(), true);
User::findOrFail($id)->update($data);
或使用此:
User::findOrFail($id)
->update(
$request->all() // or $request->json()->all()
);
P.S。确保您已经在模型中定义了$fillable
。
还要检查浏览器检查器中的“网络”标签,以查看浏览器发送到您的路线的信息。