shasoft/db-schema

Versioning/migrating database changes

v2.0.1 2024-01-22 13:04 UTC

This package is auto-updated.

Last update: 2024-04-22 13:32:16 UTC


README

Простой пример определения таблицы БД:

#[Title('Таблица для примера')]
class TabExample
{
    #[Title('Идентификатор')]
    protected ColumnId $id;
    #[Title('Имя')]
    protected ColumnString $name;
    // Первичный ключ
    #[Columns('id')]
    protected IndexPrimary $pkKey; 
}

В данном примере через класс TabExample определяется таблица, содержащая два поля и один индекс. Миграции для указанного примера создаются следующим образом:

    // Получить миграции
    $migrations = DbSchemaMigrations::get([
            // Класс таблицы
            TabExample::class,      
        ],
        // Драйвер для получения миграций
        DbSchemaDriverMySql::class   
    );
    // Создать PDO соединение
    $pdo = new \PDO(
        'mysql:dbname=cmg-db-test;host=localhost', 
        'root'
    );
    // Выполнить миграции
    $migrations->run($pdo);

В результате выполнения миграций в БД создастся таблица БД с помощью следующего SQL кода

CREATE TABLE `tabexample`(
    `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Идентификатор',
    `name` VARCHAR(255) NULL COMMENT 'Имя',
    PRIMARY KEY(`id`) USING BTREE
) COMMENT 'Таблица для примера';

Можно отменить последнии миграции с помощью следующего кода

// Отменить последнии миграции
$migrations->cancel($pdo);

эти миграции будут отменены с помощью следующего SQL кода

DROP TABLE IF EXISTS
    `tabexample`

Подробнее