【问题标题】:In Laravel validation Request, how to handle unique for different colums while update在 Laravel 验证请求中,如何在更新时处理不同列的唯一性
【发布时间】:2020-02-18 08:04:37
【问题描述】:

我有一个Employee form 用于验证,而更新我创建了一个验证请求为EmployeeEdit,在更新控制器中的员工表单内容时,我传递了这个验证请求来验证数据。

但员工表单有多个字段,我必须检查不同表的唯一性。例如,员工表单有一个 emp_id 字段,我必须检查用户表中的唯一性,检查员工表中的手机号码。

如何检查除当前 id 之外的唯一性。

我在EmployeeEdit Request中的规则

return [
         'emp_id' => 'nullable|max:255|unique:users,'.$this->get('emp_id'),
         'code' => 'nullable|unique:employees|max:255'.$this->get('code'),
         'mobile_number' => 'required|unique:employees|max:255,'.$this->get('mobile_number'),
 ];

我的控制器:

public function doEdit(EmployeeEdit $request, $id)
    { 
        echo "Validation passed";
        exit;
    }

问题: 我不知道如何从请求中传递这些字段,例如 emp_id、mobile_number,以便它们在当前请求中被忽略,并且应该检查其他数据的唯一性。

【问题讨论】:

    标签: laravel


    【解决方案1】:
    use Illuminate\Validation\Rule;
    
    return [
             'emp_id' => [
                          'nullable',
                          'max:255',
                          Rule::unique('users', 'emp_id')->ignore(\Auth::user()->id),
             ],
     ];
    

    【讨论】:

    • 非常感谢,使用您的代码,我删除了 auth::id() 并插入了我的编辑 ID ```` 'mobile_number' => ['nullable','max:255' , Rule::unique('employees', 'mobile_number')->ignore($this->id,'user_id')], ```` 上面我用过 ```` 使用 Illuminate\Validation\Rule; ```` 这工作正常,因为我请求的 id 来自 users 表,它是员工表上的外键,所以我提到了 user_id 列。
    • 很高兴为您提供帮助。
    【解决方案2】:

    从@serhii 评论中得到解决方案

    现在在 EmployeeEdit Request 中,我添加了(在顶部)

    use Illuminate\Validation\Rule;

    public function rules()
        {
            return [
                    'emp_id' => ['nullable','max:255', Rule::unique('users', 'emp_id')->ignore($this->id)],
                    'code' => ['nullable','max:255', Rule::unique('employees', 'code')->ignore($this->id,'user_id')],
                    'mobile_number' => ['nullable','max:255', Rule::unique('employees', 'mobile_number')->ignore($this->id,'user_id')],
    
    

    注意:由于$this->idusers 表中的ID,为了在员工表中使用它(将user_id 作为外键),我必须在employees 表中显式定义一个列规则。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2018-07-05
      • 2019-11-11
      • 2021-03-22
      • 2020-07-07
      • 2021-11-12
      • 2022-01-25
      • 2014-06-28
      相关资源
      最近更新 更多