*/ public function rules(): array { return [ 'session_name' => ['sometimes', 'string', 'min:1', 'max:255'], 'status' => ['sometimes', 'string', Rule::in(ChatSessionStatus::all())], ]; } protected function prepareForValidation(): void { if ($this->has('session_name') && is_string($this->input('session_name'))) { $this->merge(['session_name' => trim($this->input('session_name'))]); } } public function withValidator($validator) { $validator->after(function ($v) { if (! $this->has('session_name') && ! $this->has('status')) { $v->errors()->add('payload', '至少提供一个可更新字段'); } }); } }