From 29f3af7e35b4487e0d5e3ed1c35e2af6ae258c88 Mon Sep 17 00:00:00 2001 From: thinkphp Date: Sun, 20 Mar 2016 20:51:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9Bvalidate=E7=B1=BB=E7=9A=84uni?= =?UTF-8?q?que=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- library/think/Validate.php | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/library/think/Validate.php b/library/think/Validate.php index c41aa342..60171e4b 100644 --- a/library/think/Validate.php +++ b/library/think/Validate.php @@ -485,19 +485,23 @@ class Validate * 验证是否唯一 * @access protected * @param mixed $value 字段值 - * @param mixed $rule 验证规则 格式:数据表,字段名,排除ID,主键名 + * @param mixed $rule 验证规则 格式:数据表,字段名,排除ID * @param array $data 数据 * @return bool */ - protected function unique($value, $rule, $data, $key) + protected function unique($value, $rule, $data) { - $rule = explode(',', $rule); - $model = Loader::table($rule[0]); - $field = isset($rule[1]) ? $rule[1] : $key; - $except = isset($rule[2]) ? $rule[2] : null; - $pk = isset($rule[3]) ? $rule[3] : 'id'; + $rule = explode(',', $rule); + $model = Loader::table($rule[0]); + $pk = $model->getPk(); + $field = isset($rule[1]) ? $rule[1] : $key; + if (isset($rule[2])) { + $except = $rule[2]; + } elseif (isset($data[$pk])) { + $except = $data[$pk]; + } $map[$field] = $value; - if (!is_null($except)) { + if (isset($except)) { $map[$pk] = ['neq', $except]; } if ($model->where($map)->find()) {