Почему обновление привело бы к такому результату ` {«email»:»try@gmail.com «}` в базе данных

#php #laravel #eloquent

#php #laravel #красноречивый

Вопрос:

когда я пытаюсь обновить столбец электронной почты для пользователя, я получаю странный ввод в базе данных, и я не понимаю, почему. Вывод в столбце email в базе данных выглядит примерно так {"email":"try@gmail.com"} вместо просто email

HomeController

  protected function createMail(Request $request)
 {
      $data = request()->validate([
      'email' => 'required',
    ]);

      $id = Auth::guard('web')->id();
      User::where('id', $id)->update(['email' => $data]);
 }
  

Ответ №1:

$data в вашем случае определяется как результат ->validate() функции, но вам нужно значение email.

Доступ к значению можно получить с помощью $request->get('email') .

итак, ваша функция должна выглядеть следующим образом:

 protected function createMail(Request $request)
 {
      $this->validate($request, [
          'email' => 'required',
      ]);

      $id = Auth::guard('web')->id();
      User::where('id', $id)->update(['email' => $request->get('email')]);
 }
  

Ответ №2:

вы обновляете неправильное значение, и оно должно быть таким

 protected function createMail(Request $request)
{
  $this->validate($request, [
      'email' => 'required',
  ]);

  $id = Auth::guard('web')->id();
  User::where('id', $id)->update(['email' => $request->get('email')]);
 }
  

как вы видите request->get('email') вместо ['email' => $data]