Databázové migrácie
Zmeny databázovej schémy drž prehľadné, správne zoradené a evidované pomocou vstavaných migrácií.
Vytvor migráciu v aplikácii
Migrácie patria do aplikácie, štandardne do App\Database\Migrations. Každá trieda má stabilný identifikátor vo formáte YYYYMMDDHHMMSS_description a zmeny schémy vykonáva v up(Schema $schema). Keď je migrácia raz aplikovaná, jej identifikátor už nemeň.
<?php
declare(strict_types=1);
namespace App\Database\Migrations;
use Lemonade\Framework\Database\Migration\MigrationInterface;
use Lemonade\Framework\Database\Schema\Schema;
final class CreateUsersTable implements MigrationInterface
{
public static function identifier(): string
{
return '20260908090000_create_users';
}
public function up(Schema $schema): void
{
$schema->create('users', static function ($table): void {
$table->id();
$table->string('email', 255);
$table->string('password', 255);
});
}
}Triedy migrácií registruj explicitne
Každú migráciu registruj ako class-string v AppServiceProvider. MigrationRegistry identifikátor overí a zaradí bez vytvorenia inštancie migrácie. Aplikované migrácie ani kontrola stavu preto nevyžadujú vytvorenie ich inštancií ani načítanie závislostí konštruktora.
<?php
declare(strict_types=1);
namespace App\Providers;
use App\Database\Migrations\CreateUsersTable;
use Lemonade\Framework\Container\ContainerInterface;
use Lemonade\Framework\Core\ServiceProviderInterface;
use Lemonade\Framework\Database\Migration\MigrationRegistry;
final class AppServiceProvider implements ServiceProviderInterface
{
public function register(ContainerInterface $container): void
{
$registry = $container->get(MigrationRegistry::class);
$registry->register(CreateUsersTable::class);
}
}Spusti migrácie a skontroluj stav
Čakajúce migrácie spúšťaj cez CLI. database:migrate:status zobrazí aplikované a čakajúce migrácie aj identifikátory uložené v histórii, ktoré už nie sú v aplikácii registrované.
vendor/bin/lemonade database:migrate
vendor/bin/lemonade database:migrate:statusHistóriu aplikovaných migrácií nemeň
Migrácie sú jednosmerné. Lemonade neposkytuje rollback, down(), batche, checksumy, automatické vyhľadávanie migrácií v súborovom systéme ani automatické DDL transakcie. Dostupné operácie nad schémou závisia od možností nakonfigurovaného databázového drivera a dialektu.