【问题标题】:Route Model binding fails when using Form request使用表单请求时路由模型绑定失败
【发布时间】:2020-05-27 10:52:27
【问题描述】:

当我使用 FormRequest 验证请求时,Route 模型绑定失败。更具体地说,当我尝试访问表单请求中的参数并给出以下错误时:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name:\"moniersa\"' in 'where clause' 
(SQL: select count(*) as aggregate from `users` where `email` = a.monier2130@gmail.com and 
`name:\"moniersa\"` <> {\"id\":5 and `email:\"a`.`monier2130@gmail`.`com\"` = 
email_verified_at:null and `admin:1` = verified:0 and `created_at:\"2020-02-11 22:33:33\"` = 
updated_at:\"2020-02-11 23:17:40\"})

更新方法的代码:

public function update(User $user, UpdateUserRequest $request)
    {
        $data = $this->extract_data($request);
        $user->update($data);
        return response()->json(['data' => $user], 200);
    }

Update请求中规则函数的代码:

public function rules()
    {
        return [
            'name' => 'required|string|min:3|max:40',
            'email' => 'required|email|unique:users,email,' . $this->user,
            'password' => 'required|string|min:9|confirmed'
        ];
    }

每当我从更新方法中删除User 提示或从更新请求文件中删除$this-&gt;user 时,一切正常。关于问题出在哪里的任何线索?

【问题讨论】:

  • 感谢用户在 $user = User::findOrFail($user); 之前已经尝试过 dd($user);

标签: laravel


【解决方案1】:

路由模型绑定意味着您不再需要使用$user = User::findOrFail($user);

public function update(User $user, UpdateUserRequest $request)
    {

        $user = User::findOrFail($user);// this line is redundant, you can remove it.
        $data = $this->extract_data($request);
        $user->update($data);
        return response()->json(['data' => $user], 200);
    }

【讨论】:

  • 我的错误我忘了评论这一行,我在使用 Route 模型绑定时没有使用 findOrFail() 助手我是解决我的问题的方法,即我不能使用路由模型如上所述同时绑定和表单请求
猜你喜欢
  • 2016-09-17
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 2015-07-22
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多