【问题标题】:Laravel message: Creating default object from empty value on updateLaravel 消息:在更新时从空值创建默认对象
【发布时间】:2020-05-28 01:23:57
【问题描述】:

这是我的路线:

// Edit User Infos
Route::put('/edit/subscriber', 'Admin\UserController@editSubscriber')->name('/edit/subscriber');

axios 调用:

axios.put('/admin/edit/subscriber', {
                        userId: this.userDetails._id,
                        newFirstName: this.tempValueFirstName,
                        newLastName: this.tempValueLastName,
                        newPhone: this.tempValuePhone,
                        newEmail: this.tempValueEmail
                    }).then(({res}) => {
                        console.log(res)
                    }).catch(({err}) => {
                        console.log(err)
                    });

控制器中的更新功能:

public function editSubscriber() {
    $validated = request()->validate([
        'userId' => 'required',
        'newFirstName' => 'required|string|max:255',
        'newLastName' => 'required|string|max:255',
        'newEmail' => 'required|string|email|max:255',
        'newPhone' => 'nullable'
    ]);

    $user = User::find($validated['userId']);
    $user->first_name = $validated['newFirstName'];
    $user->last_name = $validated['newLastName'];
    $user->email = $validated['newEmail'];
    $user->phones = $validated['newPhone'];
    $user->name = $validated['newLastName'] . ' ' . $validated['newFirstName'];
    $user->save();
}

当我尝试使用更新功能时,更改已按我的意愿进行更新,但出现 500 错误:“从空值创建默认对象”。

有人有想法吗? 谢谢。

【问题讨论】:

  • 这是因为变量$user 为空,检查$validated['userId'] 是否不为空并且数据库中存在具有该ID 的用户
  • @V-K $user 和 $validated['userId'] 不为空
  • 这是不可能的。此错误指向一个空对象

标签: php laravel eloquent


【解决方案1】:

那是由于你的 $user 没有正确初始化。 确保你得到你想要更新的记录。

并且总是在值初始化后写下你在代码中使用的变量的适当条件。

还总是使用 try catch 语句来快速调试您的问题。 可能下面的代码会对你有所帮助。

 try {
         $validated = request()->validate([
                'userId' => 'required',
                'newFirstName' => 'required|string|max:255',
                'newLastName' => 'required|string|max:255',
                'newEmail' => 'required|string|email|max:255',
                'newPhone' => 'nullable'
            ]);
        if ($validated->fails()) {
            return response($validated);
        }else{

           if (!blank($user)) {
                $user = User::find($validated['userId']);
                $user->first_name = $validated['newFirstName'];
                $user->last_name = $validated['newLastName'];
                $user->email = $validated['newEmail'];
                $user->phones = $validated['newPhone'];
                $user->name = $validated['newLastName'] . ' ' . $validated['newFirstName'];
                $user->save();
            }else{
                //throw error response.
            }
        }
    } catch (\Exception $ex) {
        return response(ExceptionMessage($ex));
    }

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 2014-08-05
    • 2017-11-29
    • 2018-07-18
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多