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'); + }); + } } /**