laravel中的更新在用户表中不起作用

时间:2019-04-03 23:05:05

标签: php laravel

我试图在由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);
}

我还需要做更多事情来更新用户表中的数据吗?

3 个答案:

答案 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

还要检查浏览器检查器中的“网络”标签,以查看浏览器发送到您的路线的信息。