table = $table; // 当前的集合表 $this->siteAliasName = $siteAliasName; // 站点别名 $this->params = (isset($ruleValue['params']) && !empty($ruleValue['params'])) ? $ruleValue['params'] : ''; $this->message = (isset($ruleValue['error_msg']) && !empty($ruleValue['error_msg'])) ? $ruleValue['error_msg'] : ''; } /** * Determine if the validation rule passes. * * @param $attribute * @param mixed $value * @return bool */ public function passes($attribute, $value): bool { $this->attribute = $attribute; $this->value = $value; // 支持多个字段条件 $columnArr = explode(':', $this->params); $firstStr = array_shift($columnArr); $arr = explode(",", $firstStr); $existTable = $arr[0]; $column = $arr[1]; $where = [$column => $value]; if ($columnArr) { foreach ($columnArr as $row) { $arr = explode(",", $row); $otherColumn = $arr[0]; $toColumn = $arr[1]; $where = array_merge($where, [$toColumn => Request::input($otherColumn)]); } } $find = ES::table($existTable)->where('is_delete', 0)->where($where); try { return (bool)$find->count(); } catch (\Exception $e) { $this->message = $e->getMessage(); return false; } } /** * 编辑的时候,过滤掉当前的id * * @param $id * @return $this */ public function ignore($id): EsUniqueRule { $this->ignoreId = $id; return $this; } /** * Get the validation error message. * * @return string */ public function message() { return $this->message ?: '该值 :attribute 不存在!'; } }