workflow()->create([ 'key' => $model->getCheckKey(), ]); }); static::deleting(function ($model) { // 删除审核流水记录 $model->workflow->logs()->delete(); // 删除审核流程 $model->workflow->delete(); }); } public function getCheckKey(): string { if (property_exists($this, 'checkKey')) { return $this->checkKey; } return Str::snake(class_basename(__CLASS__)); } /** * 审核通过 */ public function checkSuccess() { } /** * 审核未通过 */ public function checkFail() { } /** * 取消申请 */ public function checkCancel() { } public function canUpdate(): bool { return in_array($this->workflow?->check_status, [CheckStatus::None, CheckStatus::Fail, CheckStatus::Cancel]); } /** * 关联审核流水 */ public function workflow() { return $this->morphOne(WorkflowCheck::class, 'subject'); } }