'integer', 'is_active' => 'boolean' ]; public function variation(): BelongsTo { return $this->belongsTo(ProductVariation::class, 'variation_id'); } public function getUrlAttribute(): string { if ($this->path && file_exists(public_path($this->path))) { return asset($this->path); } return asset('assets/images/products/default.svg'); } public function scopeOrdered($query) { return $query->orderBy('sort_order', 'asc'); } public function scopeActive($query) { return $query->where('is_active', true); } }