Add ProductVariant model and migration for productos_variantes table

This commit is contained in:
2026-06-24 11:41:42 -03:00
parent 696010a70e
commit 8e343ea9c3
3 changed files with 88 additions and 0 deletions

View File

@@ -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<ProductVariant, $this>
*/
public function variants(): HasMany
{
return $this->hasMany(ProductVariant::class, 'producto_id');
}
}

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Domains\Catalog\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable([
'producto_id',
'slug',
'nombre',
'stock',
'descripcion',
'precio',
])]
class ProductVariant extends Model
{
use HasFactory;
protected $table = 'productos_variantes';
protected function casts(): array
{
return [
'producto_id' => 'integer',
'stock' => 'integer',
'precio' => 'decimal:2',
];
}
/**
* @return BelongsTo<Product, $this>
*/
public function product(): BelongsTo
{
return $this->belongsTo(Product::class, 'producto_id');
}
}

View File

@@ -0,0 +1,39 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('productos_variantes', function (Blueprint $table) {
$table->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');
}
};