think\Validate::unique PHP Method

unique() protected method

验证是否唯一
protected unique ( mixed $value, mixed $rule, array $data, string $field ) : boolean
$value mixed 字段值
$rule mixed 验证规则 格式:数据表,字段名,排除ID,主键名
$data array 数据
$field string 验证字段名
return boolean
    protected function unique($value, $rule, $data, $field)
    {
        if (is_string($rule)) {
            $rule = explode(',', $rule);
        }
        $db = Db::name($rule[0]);
        $key = isset($rule[1]) ? $rule[1] : $field;
        if (strpos($key, '^')) {
            // 支持多个字段验证
            $fields = explode('^', $key);
            foreach ($fields as $key) {
                $map[$key] = $data[$key];
            }
        } elseif (strpos($key, '=')) {
            parse_str($key, $map);
        } else {
            $map[$key] = $data[$field];
        }
        $pk = strval(isset($rule[3]) ? $rule[3] : $db->getPk());
        if (isset($rule[2])) {
            $map[$pk] = ['neq', $rule[2]];
        } elseif (isset($data[$pk])) {
            $map[$pk] = ['neq', $data[$pk]];
        }
        if ($db->where($map)->field($pk)->find()) {
            return false;
        }
        return true;
    }