Rowcast Schema
Schema-first библиотека миграций для PDO, дружественная к Rowcast.
Что такое Rowcast Schema?
Rowcast Schema — это schema-first инструмент миграций для PHP 8.4+. Опишите структуру базы данных в PHP или YAML файле, сравните с реальной БД и автоматически сгенерируйте PHP-миграции с методами up() и down().
Ключевые особенности
- Schema-first — описывайте таблицы, колонки, индексы и FK в
schema.phpилиschema.yaml - Автоматический дифф — сравнение схемы с реальной БД и генерация миграций
- Нулевые обязательные зависимости — только PHP 8.4 и ext-pdo; YAML опционален через
symfony/yaml - Мультибаза — MySQL, PostgreSQL и SQLite из коробки
- Rebuild pipeline для SQLite — автоматическая обработка сложных DDL-изменений
- Fluent API миграций — сгенерированные миграции используют удобный
SchemaBuilder - PHPStan Level 9 — полностью статически проанализированная кодовая база
- Дружественный к Rowcast — общий PDO, те же соглашения
Быстрый пример
Определите схему в 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 # сгенерировать миграцию из изменений схемы
vendor/bin/rowcast-schema migrate # применить pending-миграции
vendor/bin/rowcast-schema status # проверить статус синхронизации
Требования
- PHP >= 8.4
- Расширение PDO
Установка
composer require ascetic-soft/rowcast-schema
Документация
Быстрый старт
Установка, конфигурация и первая миграция за 5 минут.
Описание схемы
PHP и YAML форматы, типы колонок, индексы и FK.
CLI команды
diff, migrate, rollback и status.
Миграции
Формат миграций, SchemaBuilder API и migration runner.
Поддержка SQLite
Rebuild pipeline для сложных DDL-изменений.
Справочник API
Полный справочник по классам и интерфейсам.