Bezpečná změna typů sloupců v Laravelu pomocí migrací

Jak změnit typy sloupců pomocí migrací Laravel Někdy je třeba změnit datový typ sloupce ve vaší databázi. Například chcete změnit sloupec ze sloupce string to integernebo z text t...

Poptat web

01. 08. 2025

Bezpečná změna typů sloupců v Laravelu pomocí migrací

Jak změnit typy sloupců pomocí migrací Laravel

Někdy je třeba změnit datový typ sloupce ve vaší databázi. Například chcete změnit sloupec ze sloupce string to integernebo z text to boolean. Laravel to umožňuje pomocí migrace.

V tomto příspěvku vás provedeme jednotlivými kroky.

Krok 1: (volitelně) Nainstalujte doctrine/dbal Balíček

Počínaje Laravel 10, již není nutné instalovat doctrine/dbal balíček pro většinu úprav sloupců. Pokud však vaše aplikace používá Laravel 10 aSQLite databázi, je třeba ji ještě nainstalovat, aby bylo možné měnit sloupce.

Pokud používáte SQLite, spusťte tento příkaz:

composer require doctrine/dbal

Krok 2: Vytvoření nové migrace

K vytvoření nového migračního souboru použijte příkaz Artisan:

php artisan make:migration change_column_type_in_users_table

Tím se vytvoří soubor v adresáři database/migrations složka.

Krok 3: Úprava sloupce

Otevřete nový migrační soubor. Uvnitř up() použijte metodu change() na sloupci. V tomto příkladu měníme age sloupec z string to integer:

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
 
return new class extends Migration {
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->integer('age')->change();
});
}
 
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->string('age')->change();
});
}
};

Důležité úvahy

  • Zkontrolujte, zda sloupec existuje: Zkontrolujte, zda je název sloupce správný a zda již v tabulce existuje.
  • ⚠️ Kontrola kompatibility dat: Ujistěte se, že stávající data ve sloupci lze bezpečně převést na nový typ. V opačném případě databáze vyhodí chybu.
  • 🔔 Opětovná definice všech modifikátorů: Od verze Laravel 10 musíte při úpravě sloupce výslovně uvést všechny modifikátory sloupce, které chcete zachovat (jako např. nullable(), default(), nebo unsigned()). Chybějící modifikátory budou vyřazeny.

Krok 4: Spuštění migrace

Nyní použijte migraci:

php artisan migrate

Souhrn

  • Instalace doctrine/dbal pouze v případě potřeby (např. Laravel 9 a starší verze nebo SQLite v Laravel 10).
  • Vytvoření migrace
  • Použijte $table->type('column')->change()
  • Dávejte pozor, abyste znovu zahrnuli modifikátory jako např. nullable()
  • Spustit php artisan migrate

Takto lze bezpečně aktualizovat typy sloupců v systému Laravel.

Původní článek publikoval Nabil Hassen.