char('id_tmp', 36)->nullable()->after('id'); }); // Populate UUIDs for all existing users $users = User::all(); foreach ($users as $user) { $user->id_tmp = (string) Str::uuid(); $user->save(); } // Make not nullable Schema::table('users', function (Blueprint $table) { $table->char('id_tmp', 36)->nullable(false)->change(); }); // Drop old incremental id column Schema::table('users', function (Blueprint $table) { $table->dropPrimary('PRIMARY'); $table->dropColumn('id'); }); // Rename id_tmp to id and set primary key Schema::table('users', function (Blueprint $table) { $table->char('id_tmp', 36)->primary()->change(); $table->renameColumn('id_tmp', 'id'); }); } public function down(): void { // Rollback: recreate incremental id (will lose UUIDs) Schema::table('users', function (Blueprint $table) { $table->dropPrimary('PRIMARY'); $table->dropColumn('id'); $table->bigIncrements('id'); }); } };