Laravel сообщение: создание объекта по умолчанию из пустого значения при обновлении - PullRequest
0 голосов
/ 12 февраля 2020

Вот мой маршрут:

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

Топор ios вызов:

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: «Создание объекта по умолчанию из пустого значения».

У кого-нибудь есть идея? Спасибо-х.

1 Ответ

1 голос
/ 12 февраля 2020

Из-за вашего $ 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));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...