'boolean', 'is_unlimited' => 'boolean', 'published_at' => 'date', 'gallery' => 'array', ]; /** * Relationship: Product belongs to a Category */ public function category() { return $this->belongsTo(ProductCategories::class, 'product_categories_id'); } /** * Relationship: Product has many OS versions (pivot table: os_product) */ public function osVersions() { return $this->belongsToMany(Os::class, 'os_product', 'product_id', 'os_id') ->withTimestamps(); } /** * Relationship: Product has many Control Panels (for Hosting) */ public function controlPanels() { return $this->belongsToMany(ControlPanel::class, 'product_control_panel') ->withPivot(['price_modifier', 'is_default']) ->withTimestamps(); } /** * Relationship: Product has many pricings */ public function pricings() { return $this->hasMany(ProductPricings::class, 'product_id'); } /** * Legacy: Many-to-many categories (if still needed) */ public function categories() { return $this->belongsToMany(ProductCategories::class, 'product_product_category', 'product_id', 'product_category_id'); } }