'array', ]; // ------------------------------------------------------------------------- // Relationships // ------------------------------------------------------------------------- public function order() { return $this->belongsTo(Order::class, 'order_id'); } public function product() { return $this->belongsTo(Product::class, 'product_id'); } public function getProductAttribute(): ?Product { if ($this->relationLoaded('product')) { return $this->getRelation('product'); } return $this->product()->first(); } public function pricing() { return $this->belongsTo(ProductPricings::class, 'product_pricing_id'); } public function os() { return $this->belongsTo(Os::class, 'os_id'); } /** The provisioned service spawned from this order line. */ public function service() { return $this->hasOne(Service::class, 'order_item_id'); } // ------------------------------------------------------------------------- // Helpers // ------------------------------------------------------------------------- public function getBillingLabelAttribute(): string { return match ((int) $this->months) { 0 => 'One Time', 1 => 'Monthly', 3 => 'Quarterly', 6 => 'Semi-Annually', 12 => 'Annually', 24 => '2 Years', 36 => '3 Years', default => $this->months . ' Months', }; } }