'datetime', 'finish_time' => 'datetime', ]; protected function requestedMachines(): Attribute { return Attribute::make( get: fn($value) => json_decode($value) ); } protected function area(): Attribute { return Attribute::make( get: fn($value) => json_decode($value, true) ); } public function histories(): HasMany { return $this->hasMany(MissionHistory::class); } public function roadPatrol(): HasOne { return $this->hasOne(RoadPatrol::class); } public function roadItems(): HasMany { return $this->hasMany(RoadItemsProject::class); } public function roadObserveds(): MorphToMany { return $this->morphedByMany(RoadObserved::class, 'missionable'); } public function machines(): MorphToMany { return $this->morphToMany(CMMSMachine::class, 'machinable', 'machinables', 'machinable_id', 'machine_id' ); } public function rahdaran(): MorphToMany { return $this->morphToMany(Rahdaran::class, 'rahdarable', 'rahdarables', 'rahdarable_id', 'rahdar_id', )->withPivot('is_driver'); } public function roadObserved(): MorphToMany { return $this->morphedByMany( RoadObserved::class, 'missionable', 'missionables', 'mission_id', 'missionable_id' ); } public function machine(): HasOne { return $this->hasOne(CMMSMachine::class); } }