Download the PHP package oniichann/cheap-sql-scheme without Composer
On this page you can find all versions of the php package oniichann/cheap-sql-scheme. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download oniichann/cheap-sql-scheme
More information about oniichann/cheap-sql-scheme
Files in oniichann/cheap-sql-scheme
Package cheap-sql-scheme
Short Description Визуальный редактор схем БД для Laravel: таблицы, колонки и связи на холсте, импорт из SQL-дампа или миграций, экспорт в миграции Laravel и .sql для MySQL, PostgreSQL и SQLite.
License MIT
Informations about the package cheap-sql-scheme
Cheap SQL Scheme
Визуальный редактор схем базы данных для Laravel. Ставится одной командой и открывается в браузере.
- таблицы, колонки и связи на холсте; связь тянется мышкой от колонки к колонке;
- PK, unique, index, nullable, автоинкремент, значения по умолчанию, перетаскивание колонок;
- мягкие или прямые линии, цветные зоны, выделение рамкой;
- импорт из SQL-дампа (в том числе phpMyAdmin) или из миграций Laravel;
- экспорт в одну миграцию Laravel, в миграции по файлу на таблицу (ZIP, в порядке зависимостей) или в
.sqlдля MySQL, PostgreSQL и SQLite; - схема твоей базы сразу после установки — редактор сам читает структуру базы проекта;
- коммиты как в git — меняешь схему на холсте, видишь зелёным/красным/жёлтым, что поменялось, и получаешь миграции только с изменениями, по файлу на таблицу (
create_tags_table,add_phone_to_users_table), с рабочимdown(); - английский (по умолчанию) и русский интерфейс, автосохранение, светлая и тёмная тема.
Установка
Готово: откройте /sql-schemes.
Node.js не нужен: интерфейс уже собран и лежит в dist/, Laravel отдаёт его сам.
Требования
- PHP 8.2+, расширение
zip - Laravel 11, 12 или 13
Кто может открыть редактор
По умолчанию — все. Закрыть его решает ваше приложение, например в AppServiceProvider::boot():
Можно и через middleware в конфиге: 'middleware' => ['web', 'auth'].
Все, кого пустили, работают в общем пространстве и видят все схемы. Если залогиненный пользователь должен видеть только свои, включите 'per_user' => true. Автор схемы запоминается в sql_schemas.user_id, если при создании кто-то был залогинен.
Настройка
config/cheap-sql-scheme.php:
| Ключ | По умолчанию | Что делает |
|---|---|---|
path |
sql-schemes |
Адрес редактора; API живёт под /{path}/api |
locale |
en |
Язык интерфейса: en или ru |
middleware |
['web'] |
Middleware интерфейса и API; например, ['web', 'auth'] |
per_user |
false |
true — залогиненный видит только свои схемы |
back_url |
/ |
Куда ведёт «← Назад» со списка схем; null прячет кнопку |
user_model |
null |
Модель автора для SqlSchema::user(); null берёт auth.providers.users.model |
import_max_kb |
5120 |
Максимальный размер импортируемого файла |
save_migrations |
null |
Запись коммита в проект (Commit to project): null — только в local, true/false — везде вкл/выкл |
migrations_path |
null |
Куда писать миграции; null — database/migrations |
project_schema.enabled |
true |
Создавать схему базы проекта при первом открытии |
project_schema.connection |
null |
Соединение для чтения структуры; null — по умолчанию |
project_schema.exclude |
служебные | Таблицы, которых нет в схеме проекта |
Основное можно поменять и без публикации конфига, через .env:
Схема проекта и коммиты
При первом открытии редактор читает структуру базы приложения (таблицы, колонки, одноколоночные индексы, внешние ключи) и создаёт схему «{APP_NAME} database». Служебные таблицы Laravel и таблицы пакета в неё не попадают — список в project_schema.exclude. Кнопка Refresh from database обновляет схему из базы, сохраняя положение таблиц на холсте.
Дальше всё как в git:
- Меняешь схему на холсте. Новые колонки отмечаются зелёным, изменённые — жёлтым, в шапке растёт счётчик Migrations · N.
- Migrations открывает окно миграций на вкладке Changes: по каждой таблице видно, что добавлено, удалено, изменено (было → стало) и переименовано, а в Migration code — сами миграции.
- Commit to project записывает их в
database/migrations, останетсяphp artisan migrate. Следующий коммит покажет только то, что поменялось после этого.
Одна миграция — одна таблица, как принято в Laravel. Создал таблицу tags и добавил колонку phone в users — получишь два файла: create_tags_table и add_phone_to_users_table. Порядок файлов такой, чтобы php artisan migrate прошёл без ошибок:
- таблица создаётся раньше, чем на неё сошлётся внешний ключ из другого файла;
- если новые таблицы ссылаются друг на друга по кругу, эти ключи уходят в последний файл
add_foreign_keys_to_…; - удаления таблиц идут в конце: сначала та, что ссылается, потом та, на которую ссылаются.
У каждого файла свой down(), так что php artisan migrate:rollback откатывает коммит целиком.
Что попадает в миграции:
| На холсте | В миграции |
|---|---|
| новая таблица | Schema::create(...) |
| переименовали таблицу | Schema::rename(...) |
| удалили таблицу | Schema::dropIfExists(...) |
| новая колонка | $table->string('x')... |
| переименовали колонку | $table->renameColumn(...) — данные сохраняются |
| поменяли тип, nullable, default | ...->change() |
| удалили колонку | $table->dropColumn(...) |
| unique / index | unique() / dropUnique(), index() / dropIndex() |
| связь | foreign(...) / dropForeign(...) |
Таблицы и колонки опознаются по внутреннему id, а не по имени, поэтому переименование всегда остаётся переименованием, а не «удалить и создать заново». down() откатывает всё обратно.
Если база изменилась в обход редактора
Миграции не обязательно делать через редактор. Если их выполнили обычным php artisan migrate или поправили базу руками, редактор это заметит: при открытии схемы проекта и при возврате во вкладку он сверяет базу с последним коммитом. Если что-то разошлось, над холстом появляется плашка «The database changed outside the editor» со счётчиком изменений, кнопкой Details (что именно поменялось) и Refresh (подтянуть структуру из базы). Та же кнопка всегда есть в шапке: Refresh from database.
Сверка идёт «по смыслу». То, что база хранит по-своему (varchar(255) вместо string, datetime вместо timestamp в SQLite, 1 вместо true), изменением не считается. Пока в проекте есть невыполненные миграции, база законно отстаёт от схемы, и сверка не делается.
Окно коммита предупреждает:
- о невыполненных миграциях проекта (сверка с таблицей
migrations) — сначала стоит выполнитьphp artisan migrate; - о новых NOT NULL колонках без default в существующих таблицах — такая миграция упадёт, если в таблице есть строки;
- об удалении таблиц и колонок — вместе с ними удаляются данные.
Не поддерживаются: составные индексы и внешние ключи (их редактор не трогает), смена первичного ключа.
Схемы для других проектов
В редакторе можно рисовать и чужие базы — для другого проекта. У таких схем те же коммиты и миграции по изменениям, но их миграции никогда не пишутся в этот проект: иначе php artisan migrate создал бы здесь чужие таблицы. Вместо Commit to project у них Commit & download — файл (или ZIP, если файлов несколько) кладётся в database/migrations того проекта, для которого схема. Предупреждения о невыполненных миграциях и сверка с базой тоже есть только у схемы проекта.
Запись миграций в проект
Миграции попадают в проект только коммитом схемы его базы (Commit to project). Это защищает от повторного создания таблиц, которые уже есть, и от чужих таблиц.
- Имена таблиц и колонок попадают в PHP-код миграции, поэтому в проект записываются только обычные идентификаторы (латиница, цифры,
_). - По умолчанию запись работает только в
local-окружении: на проде браузер в код приложения не пишет — там вместо записи будет Commit & download.
Вкладка Full schema в том же окне отдаёт всю схему целиком: одной миграцией, по файлу на таблицу (ZIP) или .sql для MySQL, PostgreSQL и SQLite. Её только скачивают — для нового проекта или другой базы.
Другие публикации:
Таблицы
Пакет создаёт sql_schemas, sql_tables, sql_columns и sql_relations.
Разработка
Собранный dist/ коммитится вместе с кодом: его получают те, кто ставит пакет.
Лицензия
MIT
All versions of cheap-sql-scheme with dependencies
ext-zip Version *
illuminate/support Version ^11.0|^12.0|^13.0
illuminate/database Version ^11.0|^12.0|^13.0
illuminate/http Version ^11.0|^12.0|^13.0
illuminate/routing Version ^11.0|^12.0|^13.0
phpmyadmin/sql-parser Version ^5.9|^6.0