Alberto Arena презентував пакет Laravel Truss, який візуалізує структуру вашої бази даних у вигляді інтерактивної ER-діаграми прямо в браузері. Інструмент аналізує лише метадані — таблиці, колонки, ключі та індекси — і не звертається до самих даних. Це дозволяє миттєво бачити актуальну схему без сторонніх GUI-клієнтів або ручного оновлення статичних діаграм після кожної міграції.
Основні можливості:
- Живі ER-діаграми: візуалізація таблиць, колонок та зв'язків за допомогою вбудованих активів Mermaid.
- Режим фокусування (Focus mode): ізолює обрану таблицю та її найближчі зв'язки за foreign keys.
- Diff-аналіз схеми: відстежує додані, видалені або змінені елементи структури з моменту останньої міграції.
- Schema doctor: автоматично шукає відсутні первинні ключі, неіндексовані зовнішні ключі, дублікати індексів та ризиковані типи даних.
- Підтримка Multi-connection: зручне перемикання між різними підключеннями до баз даних безпосередньо з інтерфейсу.
- Експорт: збереження діаграм у PNG чи SVG, а структури — у форматах DBML, JSON, CSV, Mermaid або Markdown (як дата-словник).
- Автономність та безпека: пакет містить усі необхідні шрифти та бібліотеки Mermaid, тому працює без доступу до CDN і сумісний із суворими правилами CSP.
# Інтерактивна панель ER-діаграм
За адресою /truss доступне полотно, де можна вільно переміщуватися та масштабувати схему. Клік на таблицю активує Focus Mode — вона та її «сусідні» таблиці підсвічуються, а решта схеми затінюється.

При фокусуванні на таблиці posts вона центрується разом із чотирма пов'язаними таблицями. Параметр Depth дозволяє крок за кроком розширювати цей радіус перегляду.

Користувачі можуть фільтрувати таблиці за назвою, перемикатися між типами SQL та лейблами у стилі Laravel, а також обирати світлу або темну тему оформлення. Якщо застосунок працює з кількома базами, їх можна зареєструвати у config/truss.php, використовуючи назви підключень із config/database.php:
// config/truss.php
'connections' => [
'pgsql' => [],
'analytics' => ['excluded_tables' => ['page_views', 'raw_events']],
],
Коли налаштовано два або більше підключень, на панелі з'являється перемикач. Обране з'єднання зберігається в URL, що дозволяє ділитися прямими посиланнями на конкретні схеми. Truss аналізує кожне підключення окремо, тому дані з різних схем не змішуються.
# Відстеження змін у схемі
Truss кешує структурний знімок після виконання міграцій і порівнює його з поточним станом бази. Результати аналізу доступні у панелі «Changes» або через Artisan-команду:
php artisan truss:diff
Цей інструмент фіксує будь-які зміни: від нових таблиць до коригувань індексів чи типів колонок, не зачіпаючи при цьому записи в таблицях.
# Діагностика Schema Doctor
Schema Doctor проводить детерміновану перевірку структури та сигналізує про:
- таблиці без первинних ключів;
- зовнішні ключі без відповідних індексів;
- дублікати або надлишкові індекси;
- невдалий вибір типів даних.
Звіт відображається в розділі «Health» або в терміналі для використання у CI-пайплайнах:
php artisan truss:doctor
# Експорт та робота в консолі
Truss дозволяє експортувати як візуальну частину (PNG, SVG), так і технічний опис (DBML, JSON, CSV, Mermaid, Markdown). Це корисно для документації або швидкого обміну структурою окремої таблиці. Аналогічні можливості доступні і через CLI:
php artisan truss:export --format=dbml --output=docs/schema.dbml
Вивід є детермінованим — однакова схема завжди генерує ідентичний файл, незалежно від порядку таблиць у базі. Завдяки прапору --check ви можете налаштувати перевірку в CI: якщо міграція змінила схему, але файл документації не був оновлений, збірка завершиться з помилкою.
# Встановлення та налаштування
Для роботи потрібні PHP 8.3+ та Laravel 12+. Для локальної розробки встановіть пакет як dev-залежність:
composer require albertoarena/laravel-truss --dev
За замовчуванням маршрут /truss доступний лише в середовищі local. Для використання на staging або production встановіть пакет як звичайну залежність і налаштуйте права доступу через шлюзи авторизації.
Детальніше про кастомні теми та параметри CLI читайте в репозиторії Laravel Truss або на офіційному сайті документації.