TaskStatus::Pending, ]; protected $casts = [ 'start_at' => 'datetime', 'end_at' => 'datetime', 'task_status' => TaskStatus::class, 'completed_at' => 'datetime', ]; protected $fillable = [ 'plan_id', 'taskable_type', 'taskable_id', 'name', 'start_at', 'end_at', 'task_status', 'completed_at', ]; protected static function booted(): void { static::deleting(function (Task $model) { $model->taskable()->delete(); }); } public function taskable(): MorphTo { return $this->morphTo(); } public function isSuccess(): bool { return $this->task_status === TaskStatus::Success; } public function markAsSuccess(): void { $this->forceFill([ 'task_status' => TaskStatus::Success, 'completed_at' => now(), ])->save(); } }