首页 > 解决方案 > 为什么 update 或 save() 在 laravel 5.8 中不起作用?

问题描述

我正在尝试更新表(从我的本机应用程序获取到 laravel),但我总是出错。这就是我获取的方式:

fetch("http://192.168.2.45/backend/public/api/checkuser", {
      method: "POST",
      body: JSON.stringify(user),
      headers: new Headers({
        "Content-Type": "application/json"
      })
    })

我的 laravel api:

Route::post('update','mainController@update');

 public function update(Request $request)
    {

        $email = $request->email;


        $error_message="DENIED";
        $Success = "Success";


       if (user::where('email', '=',$email)->count() > 0) {
        $user = user::where('email', '=',$email);
        $user->image_name = $request->email;
        $user->save()--->
      here i get my error
      ( i have also tried where(....)->update(....)
      and i get the same error)
          return response()->json(['message' => $Success]);
         }else{
           return response()->json(['message' => $error_message]);
       }
   }

标签: phplaravelreact-native

解决方案


当您使用where结果返回Query Builder时,您可以调用 CRUD 操作,而不是您的用户模型的一个项目。所以你应该得到结果并调用 save ,所以用这个替换你的块:

if ($user = user::where('email', $email)->first()) {

    $user->image_name = $email;

    $user->save();

    return response()->json(['message' => $Success]);
}
// no need for an else block

return response()->json(['message' => $error_message]);

如果找不到记录,解释first()将返回,这意味着条件,它将返回您的错误消息,如果找到它将更新您的电子邮件。(这没有意义,但这是你的代码)nullfalseimage_name


推荐阅读