'integer', 'event_date_id' => 'integer', 'inventory_id' => 'integer', ]; } /** @return BelongsTo */ public function catalogItem(): BelongsTo { return $this->belongsTo(CatalogItem::class); } /** @return BelongsTo */ public function eventDate(): BelongsTo { return $this->belongsTo(EventDate::class); } /** @return HasMany */ public function sourceTickets(): HasMany { return $this->hasMany(Ticket::class, 'source_variant_id'); } /** @return BelongsTo */ public function inventory(): BelongsTo { return $this->belongsTo(Inventory::class); } /** @return HasMany */ public function definitions(): HasMany { return $this->hasMany(VariantDefinition::class); } /** @return BelongsToMany */ public function attachments(): BelongsToMany { $relation = $this->belongsToMany( Attachment::class, 'catalog_items_attachments', 'variant_id', 'attachment_id' ) ->withPivot('orden') ->orderByPivot('orden'); if ($this->catalog_item_id !== null) { $relation->withPivotValue('catalog_item_id', $this->catalog_item_id); } return $relation; } public function getPrice(): float { return $this->catalogItem->getPrice(); } public function getName(): string { return $this->catalogItem->nombre; } }