Laravel 5.3. Генерация Eloquent моделей и документации

Категория: Laravel

Справка по генерации моделей в Laravel 5.3.

Генерация класса

Для генерации класса модели в Laravel 5.3 есть команда make:model:

php artisan make:model Models/Issue -mc

В результате будет создан файл app/Models/Issue.php, а также классы контроллера (со всеми CRUD методами) и миграции:

app/Http/Controllers/issueController.php
database/migrations/2016_07_19_141729_create_issues_table.php

Как видите, генерация названия контроллера чуть хромает..

Документирование модели

Для генерации документации свойств и методов модели есть команда ide-helper:models (из пакета laravel-ide-helper):

php artisan ide-helper:models App\\Models\\Issue
Примечания

При ошибке "Warning: `"doctrine/dbal": "~2.3"` is required to load database information" установите пакет doctrine/dbal:

php composer require doctrine/dbal

При ошибке "Exception: Unknown database type json requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it" вы можете:

  1. Обновить doctrine/dbal в надежде на то, что PR приняли (обсуждение тут).
  2. Либо заменить тип полей в таблице БД с json на longtext.

По итогу будет сгенерирован файл _ide_helper_models.php с описанием свойств и методов типа where*().

Проблемы

При повторной генерации документации для моделей - файл _ide_helper_models.php будет полностью перезаписан! Поэтому нет возможности задавать описание для свойств модели.

Также появляется проблема с дублированием класса модели в PhpStorm: "Other declaration of class Issue exist at _ide_helper_models.php".

Для решения этих проблем можно генерировать phpDocBlock документацию непосредственно в класс модели:

php artisan ide-helper:models -W App\\Models\\Issue

Но, при удалении поля из таблицы и повторной генерации PhpDoc - свойство не будет удалено из блока документации класса. Что, вроде как, и логично - вы ведь должны иметь возможность добавлять свойства модели, которых нет в таблице БД.

Примечание

Еще раз, при генерации документации непосредственно в класс модели, новые поля таблицы БД (свойства класса) будут добавлены в phpDocBlock. Но, при удалении полей из таблицы БД, они не будут удаляться из блока комментариев.

#laravel 5.3 generate classes, #laravel make models, #phpdoc for laravel model

категория: Laravel