'boolean', 'is_product_variant' => 'boolean', 'created_at' => 'datetime', 'updated_at' => 'datetime', ]; protected $dates = ['deleted_at']; protected function serializeDate(DateTimeInterface $date) { return $date->format('Y-m-d H:i:s'); } public function product() { return $this->belongsTo(Product::class, 'product_id'); } public function inventory() { return $this->morphOne(OutletInventory::class, 'item'); } public function reviews() { return $this->hasMany(ProductReview::class, 'product_variant_id', 'uuid'); } public function getServerImageUrlAttribute($value) { if (!$value) return null; return asset('storage/' . $value); } }