'boolean', 'selling_price' => 'integer', 'msrp' => 'integer', 'purchase_price' => 'integer', 'stock_quantity' => 'integer', 'is_rentable' => 'boolean', 'rental_duration_options' => 'array', 'residual_value_percentage' => 'decimal:2', 'is_active' => 'boolean', ]; } /** * Gehört zu einem Produkt. */ public function product(): BelongsTo { return $this->belongsTo(Product::class); } /** * Steuersatz der Variante. */ public function taxRate(): BelongsTo { return $this->belongsTo(TaxRate::class); } /** * Attribut-Werte dieser Variante (z.B. Farbe: Rot, Größe: L). */ public function attributeValues(): BelongsToMany { return $this->belongsToMany(AttributeValue::class, 'product_variant_attributes'); } /** * Logistik-Daten der Variante (1:1). */ public function logistics(): HasOne { return $this->hasOne(ProductLogistics::class); } /** * Bilder der Variante. */ public function media(): MorphMany { return $this->morphMany(Media::class, 'model'); } }