
Jak používat Phinx na migrace databáze
V tomto článku se podíváme se na to, jak Phinx nainstalovat, nastavit a jak vytvořit a provést databázovou migraci.
Phinx - zprovoznění
Instalace
composer require robmorgan/phinx
Init
vendor/bin/phinx init
Tím se vytvořil soubor phinx.php a tam je třeba nastavit přístupy k databázi atd.
Databázové migrace
Vytvoření migrace
Nyní je třeba vytvořit migraci s nějakým názvem, např. přidání sloupce pro aktivitu u uživatele.
vendor/bin/phinx create AddUserActivity
Vytvoření migrace
Vytvořením migrace se vytvořil soubor db/migrations/20250221053911_add_user_activity.php a ten nyní můžeme upravit.
Do metody up() se napíše co chceme v databázi provést za změny a do metody down() zase SQL query pro vrácení těchto změn zpět.
public function up(): void
{
$sqlQuery = "
ALTER TABLE `user` ADD `active` TINYINT(1) NOT NULL DEFAULT '1';
";
$this->execute($sqlQuery);
}
public function down(): void
{
$sqlQuery = "
ALTER TABLE `user` DROP `active`
";
$this->execute($sqlQuery);
}
Provedení migrace
vendor/bin/phinx migrate -e development
Skvělé, nyní se provedla databázová migrace a tato změna se také zalogovala do databázové tabulky phinxlog.
Vrácení změn (rollback)
Pokud se chceme vrátit v migracích zpět, tak se použije tzv. rollback.
Rollback na předchozí verzi
vendor/bin/phinx rollback -e development
Rollback na verzi 20250217053911
vendor/bin/phinx rollback -e development -t 20120103083322
Možné chyby
1.) RuntimeException: You need to enable the PDO_Mysql extension for Phinx to run properly.
FIX: sudo apt install php8.3-pdo
2.) PDOException: SQLSTATE[HY000] [2002] No such file or directory in /vendor/robmorgan/phinx/src/Phinx/Db/Adapter/PdoAdapter.php:96
FIX: Nefunguje spojení na db
3.) Nefungují phinx migrace přes docker
FIX: docker exec fa8ed9411c55 /var/www/vendor/bin/phinx --configuration="/var/www/phinx.php" migrate -e development