'integer', 'new_status' => 'integer', 'metadata' => 'array', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; /** * @return BelongsTo */ public function changedByUser(): BelongsTo { return $this->belongsTo(User::class, 'changed_by'); } /** * @return BelongsTo */ public function registrationPeriod(): BelongsTo { return $this->belongsTo(RegistrationPeriod::class, 'registration_period_id'); } /** * @param array $metadata */ public static function record( string $action, string $description, ?int $changedBy = null, ?int $oldStatus = null, ?int $newStatus = null, ?int $registrationPeriodId = null, array $metadata = [] ): self { return self::create([ 'action' => $action, 'description' => $description, 'changed_by' => $changedBy, 'old_status' => $oldStatus, 'new_status' => $newStatus, 'registration_period_id' => $registrationPeriodId, 'metadata' => $metadata, ]); } }