thinkphp验证器获取$data数据,自定义验证,多条件唯一性验证unique验证

thinkphp验证器获取$data数据,自定义验证,多条件唯一性验证,软删除验证唯一性,unique验证

问题描述

 项目中使用软删除,数据删除后验证器里唯一性验证不通过,需要字节拼接条件

如下

// 复杂验证条件
'name'   => 'unique:user,status=1&account='.$data['account'],

但是默认rule规则里不能直接获取到$data

解决方法

使用自定义验证拿到$data再验证唯一性

代码

class Teacher extends Validate
{

    protected $rule = [
        'name'         =>  'require|max:20',
        'user_name'         =>  'require|max:20|unique:teacher',
        'role_id'    =>  'number',
        'mobile'    =>  'mobile|checkMobile',

    ];

    // 自定义验证规则
    protected function checkMobile($value,$rule,$data=[])
    {
        $rule = ['mobile'    =>  'unique:teacher,delete_time=0&mobile='.$data['mobile'],];
        return $this->check($data,$rule);
    }

    protected $message  =   [
        'name.max'     =>  '姓名不能超过20个字符',
        'name.require' =>   '姓名不能为空',
        'user_name.max' =>   '用户名不能超过20个字符',
        'user_name.require' =>   '用户名不能为空',
        'mobile.mobile' =>   '手机号码错误',
        'mobile.unique' =>   '手机号码存在,请确认后重新填写',

    ];
}

日志记录执行sql如下

LOG: SELECT `id` FROM `teacher` WHERE  `delete_time` = 0  AND `mobile` = '18812345678' LIMIT 1
上一篇:std::shared_ptr及std::unique_ptr使用数组


下一篇:C++11多线程编程(三)——lock_guard和unique_lock