[ 'source' => 'name', 'onUpdate' => true ] ]; } public function getStatusAttribute(): string { return $this->attributes['status'] == 0 ? 'Inactive' : 'Active'; } public function scopeActive($query) { return $query->whereStatus(true); } public function scopeHasQuantity($query) { return $query->where('quantity', '>', 0); } public function category(){ return $this->belongsTo(Category::class); } public function tags(){ return $this->belongsToMany(Tag::class, 'product_tags'); } public function media(): MorphMany { return $this->morphMany(Media::class, 'mediable'); } public function firstMedia(): MorphOne { return $this->morphOne(Media::class, 'mediable') ->orderBy('file_sort', 'asc'); } }