'require|unique_name', 'match_type' => 'require', 'methods' => 'require', 'path' => 'require', 'message' => 'require', ]; /** * 定义错误信息 */ protected array $message = [ 'name.require' => '名称不能为空', 'name.unique_name' => '名称已被占用', 'match_type.require' => '类型不能为空', 'http_methods.require' => '请求方法不能为空', 'path.require' => '请求路径不能为空', 'message.require' => '提示消息不能为空', ]; /** * 重复验证 * * @param $value * @param $rule * @param array $data * * @return bool */ protected function unique_name($value, $rule, array $data = []): bool { $query = RateLimiter::where('name', $value); // 如果是更新操作,可以排除当前记录 if (isset($data['id'])) { $query->where('id', '<>', $data['id']); } return $query->count() === 0; } /** * 定义场景 */ protected array $scene = [ 'store' => [ 'name', // 'match_type', 'methods', 'path', 'message', ], 'update' => [ 'id', ], 'destroy' => [ 'id', ], ]; }