Быстрый старт

Начните работу с Rowcast Schema за 5 минут.

Содержание

Установка

composer require ascetic-soft/rowcast-schema

Требования:

  • PHP >= 8.4
  • Расширение PDO

Опционально: поддержка YAML

Если предпочитаете YAML-формат:

composer require symfony/yaml

Конфигурация

Создайте rowcast-schema.php в корне проекта (путь по умолчанию):

<?php

return [
    'connection' => [
        'dsn' => 'mysql:host=localhost;dbname=app',
        'username' => 'root',
        'password' => 'secret',
    ],
    'schema' => __DIR__ . '/schema.php',
    'migrations' => __DIR__ . '/migrations',
    'migration_table' => '_rowcast_migrations',
    'ignore_tables' => [
        '/^tmp_/',
        '/^audit_/',
        static fn (string $table): bool => str_ends_with($table, '_shadow'),
    ],
];

Конфиг можно хранить и в кастомной директории:

vendor/bin/rowcast-schema --config=database/rowcast-schema.php diff

Конфиг-файл может возвращать:

  • массив (классический режим),
  • или фабрику static function (string $projectDir): array (удобно для env из корня проекта).

migration_table задает таблицу для хранения примененных версий и автоматически исключается из diff схемы. ignore_tables используйте для своих правил исключения (regex-строки и/или callback).

Ключ Описание
connection.dsn Строка подключения PDO
connection.username Имя пользователя БД
connection.password Пароль
connection.options Опциональный массив PDO-опций
schema Путь к файлу схемы (.php, .yaml, .yml)
migrations Директория для миграций
migration_table Таблица учёта применённых миграций (по умолчанию: _rowcast_migrations)
ignore_tables Regex/callback-правила исключения таблиц из diff

Определите схему

Создайте schema.php:

<?php

return [
    'tables' => [
        'users' => [
            'columns' => [
                'id' => [
                    'type' => 'integer',
                    'primaryKey' => true,
                    'autoIncrement' => true,
                ],
                'email' => [
                    'type' => 'string',
                    'length' => 255,
                ],
                'created_at' => [
                    'type' => 'datetime',
                    'default' => 'CURRENT_TIMESTAMP',
                ],
            ],
            'indexes' => [
                'idx_users_email' => [
                    'columns' => ['email'],
                    'unique' => true,
                ],
            ],
        ],
    ],
];

Сгенерируйте первую миграцию

vendor/bin/rowcast-schema diff

Эта команда сравнивает схему с текущей БД и создаёт PHP-файл миграции в директории migrations/.

Предварительный просмотр без генерации файла:

vendor/bin/rowcast-schema diff --dry-run

Глобальный путь к конфигу можно передать для любой команды:

vendor/bin/rowcast-schema --config=database/rowcast-schema.php status

Примените миграции

vendor/bin/rowcast-schema migrate

Проверьте статус

vendor/bin/rowcast-schema status

Показывает применённые и pending-миграции, а также расхождения между схемой и БД.


Что дальше?