media()->get()->each->delete(); }); } const STATUSES = ['pending', 'in_progress', 'completed', 'approved', 'rejected']; const RESULTS = ['pass', 'fail', 'conditional']; protected $fillable = [ 'project_id', 'layer_id', 'feature_id', 'template_id', 'user_id', 'data', 'status', 'inspector_user_id', 'completed_at', 'result', 'notes', 'uuid', 'client_updated_at', ]; protected $casts = [ 'data' => 'array', 'completed_at' => 'datetime', ]; public function project() { return $this->belongsTo(Project::class); } public function layer() { return $this->belongsTo(Layer::class); } public function template() { return $this->belongsTo(InspectionTemplate::class); } public function user() { return $this->belongsTo(User::class); } public function inspector() { return $this->belongsTo(User::class, 'inspector_user_id'); } public function media() { return $this->morphMany(Media::class, 'mediable'); } public function feature() { return $this->belongsTo(Feature::class, 'feature_id'); } public function issues() { return $this->hasMany(Issue::class); } public function scopePending($q) { return $q->where('status', 'pending'); } public function scopeCompleted($q) { return $q->where('status', 'completed'); } public function scopeRejected($q) { return $q->where('status', 'rejected'); } }