首页 > 解决方案 > 如何更新 laravel 中的数据?

问题描述

我正在尝试更新我已经存在的用户。但我真的不知道该怎么做。

这是我用来更新用户的 API 路由

Route::put('/user/{user}', [UserController::class, 'updateUser']);

用户控制器中的功能是这样的:

public function updateUser(Request $request, User $user){
        $data = $request->validate([
            'username' => '',
            'firstname' => '',
            'lastname' => '',
            'email' => '',
            'password' => '',
            'phone_number' => '',
            'role' => '',
            'companyID' => '',
            'companyRole' => '',
        ]);

        $input = $request->all();
        $user->update($input);
        return $user;
    }

这是我在 vue 中用来将新用户数据发送到 laravel 的函数:

editUser(){
            console.log(this.user)
            this.$axios
                .put('api/user/' + this.$route.params.id + this.user)
                .then((response) => {
                    console.log(response.data)
                })
                .catch((err) => {
                    console.log(err)
                })
        }

这是“this.user”

{ "id": 1, "username": "user", "firstname": "user", "lastname": "user", "email": "user@test.com", "email_verified_at": null, "phone_number": 6282223, "role": "user", "companyID": 2, "companyRole": "employee", "logged_in": 0, "created_at": "2021-11-11T12:00:23.000000Z", "updated_at": "2021-11-11T12:00:23.000000Z" }

而“this.$route.params.id”只是用户 ID

我不知道我做错了什么。它没有更新

标签: laravelvue.jsaxios

解决方案


也许我会尝试另一种方法来更新具有特定 ID 的用户。

在定义路由的 web.php 文件中:

Route::get('/update_user', '\App\Http\Controllers\PostController@update_user');

在我的示例 PostController 中的控制器中:

public function update_user()
{
   //Find all users 
   $users = DB::select('select * from users');

   foreach($users as $user){
       //UPDATE
       DB::update('update users set email = "userTest@test.com" where id = ?',[4]);
   }

   //If you want echo an alert message for the result
   echo '<script>alert("The email of user with id = 4 has been updated.")</script>';

}

尝试根据您的需要塑造代码,但基本思想如上所述。


推荐阅读