Команда db
db управляет подключениями к БД и генерацией схемы: ping проверяет соединения,
migrate создаёт таблицы из атрибутов сущностей, sql показывает сгенерированный
DDL без выполнения.
Что такое db и зачем
db — консольный интерфейс к базе данных проекта.
Проблема. Нужно проверять, что приложение достаёт до БД, и поднимать схему на новой машине. Делать это внешними утилитами и вручную — лишние шаги.
Решение. db даёт проверку связи и генерацию схемы прямо из кода проекта — по
всем сконфигурированным подключениям. Об этом и раздел.
Субкоманды
| Субкоманда | Назначение |
|---|---|
ping |
Подключиться к каждому конфигу, показать драйвер/DSN/задержку/статус |
migrate |
Выполнить DDL (сгруппированный по типам) |
sql |
Напечатать DDL в stdout без выполнения (предпросмотр) |
php call db ping
php call db sql # предпросмотр
php call db migrate # выполнитьФлаги фаз (migrate и sql)
Выбирают, какие части схемы генерировать. Без флагов — все пять:
| Флаг | Фаза | Примечание |
|---|---|---|
-e |
Extensions | только pgsql |
-s |
Schemes | только pgsql |
-t |
Tables | — |
-i |
Indexes | — |
-c |
Constraints | FK, CHECK |
php call db migrate # все фазы
php call db migrate -t -i # только таблицы + индексыОбласть (плагины)
| Опция | Область |
|---|---|
| (нет) | Приложение (Project) |
--plugin=<name> |
Один плагин |
--plugins |
Все плагины |
php call db migrate --plugin=bill
php call db sql --plugin=bill -sping всегда пингует всё
Опции --plugin / --plugins действуют только на migrate и sql. Команда
db ping всегда проверяет приложение и все плагины, игнорируя эти опции.
Поведение миграции
- Выполняются только
#[Migratable]-конфиги, в порядке приоритета High → Normal → Low. - Идемпотентно: ошибки «объект уже существует» превращаются в
[EXIST], а не[FAILED](pgsql42P06/42P07/42710, mysql42S01/42000). - При
DEBUG=trueв ответе виден текст SQL-ошибки для[FAILED].
Полные правила генерации схемы, опт-ин и ограничения — на странице Миграции.
Дальше
- Миграции — как из сущностей получается схема
- Подключение к БД — классы
DbConfig,#[Migratable] - Консоль — обзор