Modificación a la migración tags

This commit is contained in:
Juan Felipe Zapata Moreno 2025-12-04 15:32:05 -06:00
parent b5779e5bdb
commit df252f55f2

View File

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