From df252f55f2db615c80ef13ed1d9a2060412fd3e4 Mon Sep 17 00:00:00 2001 From: Juan Felipe Zapata Moreno Date: Thu, 4 Dec 2025 15:32:05 -0600 Subject: [PATCH] =?UTF-8?q?Modificaci=C3=B3n=20a=20la=20migraci=C3=B3n=20t?= =?UTF-8?q?ags?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2025_12_04_095636_modify_tags_table.php | 43 ++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/database/migrations/2025_12_04_095636_modify_tags_table.php b/database/migrations/2025_12_04_095636_modify_tags_table.php index a419207..625bb62 100644 --- a/database/migrations/2025_12_04_095636_modify_tags_table.php +++ b/database/migrations/2025_12_04_095636_modify_tags_table.php @@ -2,6 +2,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; return new class extends Migration @@ -11,11 +12,43 @@ */ public function up(): void { - Schema::table('tags', function (Blueprint $table) { - $table->dropForeign(['package_id']); - $table->renameColumn('package_id', 'box_id'); - $table->foreign('box_id')->references('id')->on('boxes')->onDelete('cascade'); - }); + // Obtener el nombre real de la FK si existe + $foreignKeys = DB::select(" + SELECT CONSTRAINT_NAME + FROM information_schema.KEY_COLUMN_USAGE + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'tags' + AND COLUMN_NAME = 'package_id' + AND REFERENCED_TABLE_NAME IS NOT NULL + "); + + // Eliminar FK solo si existe + if (!empty($foreignKeys)) { + $constraintName = $foreignKeys[0]->CONSTRAINT_NAME; + DB::statement("ALTER TABLE tags DROP FOREIGN KEY `{$constraintName}`"); + } + + // Renombrar columna solo si existe package_id + if (Schema::hasColumn('tags', 'package_id')) { + Schema::table('tags', function (Blueprint $table) { + $table->renameColumn('package_id', 'box_id'); + }); + } + + $boxForeignKeys = DB::select(" + SELECT CONSTRAINT_NAME + FROM information_schema.KEY_COLUMN_USAGE + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'tags' + AND COLUMN_NAME = 'box_id' + AND REFERENCED_TABLE_NAME = 'boxes' + "); + + if (empty($boxForeignKeys)) { + Schema::table('tags', function (Blueprint $table) { + $table->foreign('box_id')->references('id')->on('boxes')->onDelete('cascade'); + }); + } } /**