Laravel Blueprint: Автоматическая генерация кода для моделей, миграций и фабрик

Введение

Если вы работаете с Laravel, то наверняка сталкивались с однообразной рутинной работой по созданию моделей, миграций, фабрик и даже сидеров. Чтобы ускорить разработку и сократить вероятность ошибок, можно воспользоваться Laravel Blueprint — мощным инструментом, который генерирует базовый код на основе описания в YAML.
В этой статье мы рассмотрим, как с помощью Blueprint создать четыре модели: Product, Category, Feature и Review.

1. Описание моделей в YAML

Создайте в корне проекта файл с именем draft.yamlи вставьте в него следующий код:
models:
  Product:
    name: string
    description: text
    price: integer
    tags: json nullable
    image: string nullable
    relationships:
      belongsTo: Category
      belongsToMany: Feature
      hasMany: Review

  Category:
    name: string
    description: text
    relationships:
      hasMany: Product

  Feature:
    name: string
    description: text
    relationships:
      belongsToMany: Product

  Review:
    title: string
    content: text
    rating: integer
    approved: boolean default:false
    relationships:
      belongsTo: Product

Что описывает этот файл?

  • Product — товар с такими полями, как namedescriptionprice, а также дополнительными полями tags(JSON, допускается null) и image (строка, допускается null). Кроме того, у продукта есть связи: он принадлежит категории, может иметь множество характеристик (features) и множество отзывов.
  • Category — категория товаров, которая имеет название, описание и связь один-ко-многим с продуктами.
  • Feature — характеристика товара, описывается названием и описанием, а также связывается с продуктами через отношение "многие ко многим".
  • Review — отзыв с заголовком, содержимым, рейтингом и булевым полем approved (со значением по умолчанию false). Каждый отзыв принадлежит конкретному продукту.

2. Установка Laravel Blueprint

Установите пакет, выполнив в терминале команду:
composer require -W --dev laravel-shift/blueprint
Флаг -W гарантирует, что все зависимости будут обновлены корректно. После установки пакет доступен только в режиме разработки (благодаря ключу --dev), что не повлияет на рабочую среду.

3. Генерация кода

Запустите генерацию кода с помощью Artisan:
php artisan blueprint:build
Команда анализирует файл draft.yaml и автоматически создаёт:
  • Модели с указанными полями и связями.
  • Миграции для создания таблиц в базе данных.
  • Фабрики для генерации тестовых данных.
Обратите внимание, что Blueprint также умеет генерировать контроллеры и сидеры, но в данном примере они не требуются.

4. Применение миграций и сидирование базы данных

Чтобы обновить структуру базы данных и добавить начальные данные (например, стандартного пользователя test@example.com), выполните:
php artisan migrate --seed
После этого все необходимые таблицы будут созданы, и база данных будет готова к работе

Заключение

Laravel Blueprint позволяет существенно ускорить процесс разработки, избавляя вас от необходимости писать шаблонный код вручную. Достаточно описать структуру приложения в одном YAML-файле, и инструмент сгенерирует для вас модели, миграции, фабрики и многое другое. Попробуйте интегрировать Blueprint в свой рабочий процесс, чтобы сосредоточиться на бизнес-логике, а не на рутинных задачах.

Комментарии