'boolean', 'price_override' => 'decimal:2']; public function product(): BelongsTo { return $this->belongsTo(Product::class); } public function attributeValues(): BelongsToMany { return $this->belongsToMany(AttributeValue::class, 'product_variant_attribute_values') ->with('attribute'); } public function getEffectivePriceAttribute(): float { return (float) ($this->price_override ?? $this->product->base_price); } public function getLabelAttribute(): string { return $this->attributeValues->map(fn($v) => $v->value)->join(', '); } }