首页 > 解决方案 > 为什么更新会在数据库中产生这个结果` {"email":"try@gmail.com"}`

问题描述

当我尝试为用户更新电子邮件列时,我在数据库中得到一个奇怪的输入,我不明白为什么。数据库中电子邮件列中的输出看起来像这样 {"email":"try@gmail.com"},而不仅仅是电子邮件

家庭控制器

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

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

标签: phplaraveleloquent

解决方案


$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')]);
 }

推荐阅读