From 8e343ea9c325f21f35307fbaa6aa724aab710071 Mon Sep 17 00:00:00 2001 From: ncoronel Date: Wed, 24 Jun 2026 11:41:42 -0300 Subject: [PATCH] Add ProductVariant model and migration for productos_variantes table --- app/Domains/Catalog/Models/Product.php | 9 +++++ app/Domains/Catalog/Models/ProductVariant.php | 40 +++++++++++++++++++ ...00200_create_productos_variantes_table.php | 39 ++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 app/Domains/Catalog/Models/ProductVariant.php create mode 100644 database/migrations/2026_06_24_000200_create_productos_variantes_table.php diff --git a/app/Domains/Catalog/Models/Product.php b/app/Domains/Catalog/Models/Product.php index be23524..d9e5482 100644 --- a/app/Domains/Catalog/Models/Product.php +++ b/app/Domains/Catalog/Models/Product.php @@ -8,6 +8,7 @@ use Illuminate\Database\Eloquent\Attributes\Fillable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\HasMany; #[Fillable([ 'tenant_codigo', @@ -39,4 +40,12 @@ class Product extends Model { return $this->belongsTo(Tenant::class, 'tenant_codigo', 'codigo'); } + + /** + * @return HasMany + */ + public function variants(): HasMany + { + return $this->hasMany(ProductVariant::class, 'producto_id'); + } } diff --git a/app/Domains/Catalog/Models/ProductVariant.php b/app/Domains/Catalog/Models/ProductVariant.php new file mode 100644 index 0000000..edefee7 --- /dev/null +++ b/app/Domains/Catalog/Models/ProductVariant.php @@ -0,0 +1,40 @@ + 'integer', + 'stock' => 'integer', + 'precio' => 'decimal:2', + ]; + } + + /** + * @return BelongsTo + */ + public function product(): BelongsTo + { + return $this->belongsTo(Product::class, 'producto_id'); + } +} diff --git a/database/migrations/2026_06_24_000200_create_productos_variantes_table.php b/database/migrations/2026_06_24_000200_create_productos_variantes_table.php new file mode 100644 index 0000000..426406b --- /dev/null +++ b/database/migrations/2026_06_24_000200_create_productos_variantes_table.php @@ -0,0 +1,39 @@ +id(); + $table->unsignedBigInteger('producto_id'); + $table->string('slug')->nullable(); + $table->string('nombre')->nullable(); + $table->unsignedInteger('stock')->default(0); + $table->text('descripcion')->nullable(); + $table->decimal('precio', 10, 2); + $table->timestamps(); + + $table->foreign('producto_id') + ->references('id') + ->on('productos') + ->cascadeOnUpdate() + ->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('productos_variantes'); + } +};