updateArchiveInfoStatus(); }); static::updated(function ($archiveHistory) { $archiveHistory->updateArchiveInfoStatus(); }); } public function updateArchiveInfoStatus() { // Получаем связанную модель через морф $historyable = $this->historyable; if (!$historyable) { return; } // Проверяем, есть ли у модели архивная информация if (method_exists($historyable, 'archiveInfo') && $historyable->archiveInfo) { $historyable->archiveInfo->update([ 'status_id' => $this->determineStatusId() ]); } } public function determineStatusId() { if ($this->has_lost) { return 4; // Утерян } if ($this->issue_at && !$this->return_at) { return 3; // Выдан } if ($this->return_at) { return 2; // В архиве } return 2; // По умолчанию } protected $fillable = [ 'keyarhiv', 'foxpro_history_id', 'mis_history_id', 'issue_at', 'return_at', 'comment', 'org_id', 'employee_name', 'employee_post', 'has_lost', ]; public function foxproHistory() { return $this->belongsTo(SiMedicalHistory::class, 'keykarta', 'foxpro_history_id'); } public function misHistory() { return $this->belongsTo(MisMedicalHistory::class, 'MedicalHistoryID', 'mis_history_id'); } public function historyType() { return $this->mis_history_id !== null ? 'mis' : 'foxpro'; } public function org(): \Illuminate\Database\Eloquent\Relations\BelongsTo { return $this->belongsTo(Org::class); } }