【问题标题】:laravel custom request edit uniquelaravel 自定义请求编辑唯一
【发布时间】:2018-03-08 19:59:31
【问题描述】:

我对 laravel 5.5 有自定义请求 这是请求

public function rules()
{
    if($this->method() == 'POST')
    {
        return [
            'user_name' => 'required|unique:users|max:40|min:1',
            'user_email' => 'required|email|unique:users|max:40|min:3',
            'user_phone' => 'required|max:40|min:1',
            'password' => 'required|min:3',
            'image' => 'image|mimes:jpg,jpeg,gif,png|max:2048',
        ];          
    }
    elseif($this->method() == 'PATCH')
    {
        return [
            'user_name' => 'required|min:1|max:40|unique:users,user_name,'.$this->id,
            'user_email' => 'required|email|unique:users|max:40|min:3',
            'user_phone' => 'required|max:40|min:1',
            'password' => 'required|min:3',
            'image' => 'image|mimes:jpg,jpeg,gif,png|max:2048',
        ];              
    }

现在在方法路径上 我想忽略当前的唯一 ID 我是这样写的

'user_name' => 'required|min:1|max:40|unique:users,user_name,'.$this->id,

但它总是告诉我您尝试更新的用户名已在使用中 我不想从控制器这样做 我想在请求中做 谢谢

【问题讨论】:

  • select count(*) as aggregate from users where user_name = pulldozer and id 这是最后的sql语句,id 没有值
  • 是认证用户还是其他用户更新?
  • 其他用户更新我无法使用 Auth::user->id
  • 那么你应该添加一个名为id的隐藏输入,其中包含更新的用户ID!
  • $this->request->get('id')替换$this->id

标签: laravel request laravel-request


【解决方案1】:

您正在使用$this->id,这里$this 不是User 类而是Request 实例,您可以考虑使用$this->user()->idauth()->id()Auth::id()。如果您在路由中有用户 ID,例如 users/{userId},您也可以使用 $this->route('userId')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 2023-03-22
    • 2018-05-07
    • 2017-11-17
    • 2020-06-11
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多