Php 为什么更新会产生这样的结果`{quot;email:quot;try@gmail.com&数据库中的quot;}`

Php 为什么更新会产生这样的结果`{quot;email:quot;try@gmail.com&数据库中的quot;}`,php,laravel,eloquent,Php,Laravel,Eloquent,当我尝试更新用户的电子邮件栏时,我在数据库中得到一个奇怪的输入,我不明白为什么。数据库中电子邮件列中的输出类似于以下内容:{“email”:try@gmail.com“}而不仅仅是电子邮件 家庭控制器 $data在您的案例中,定义为->validate()函数的结果,但您需要电子邮件的值 可以通过$request->get('email')访问值 因此,您的函数应该如下所示: protected function createMail(Request $request) { $th

当我尝试更新用户的电子邮件栏时,我在数据库中得到一个奇怪的输入,我不明白为什么。数据库中电子邮件列中的输出类似于以下内容:
{“email”:try@gmail.com“}
而不仅仅是电子邮件

家庭控制器
$data
在您的案例中,定义为
->validate()
函数的结果,但您需要电子邮件的值

可以通过
$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')]);
 }

您正在更新错误的值,应该是这样的

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

  $id = Auth::guard('web')->id();
  User::where('id', $id)->update(['email' => $request->get('email')]);
 }
如您所见,请求->获取('email')而不是
['email'=>$data]

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

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