Jak používat Phinx na migrace databáze

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

Jak se ti článek líbil?

Komentáře (0)

Přidat komentář