Návod

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ň.

example.php
<?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.

example.php
<?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é.

example.php
vendor/bin/lemonade database:migrate
vendor/bin/lemonade database:migrate:status

Histó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.