Laravel 5.3. Генерация Eloquent моделей и документации
Справка по генерации моделей в 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" вы можете:
По итогу будет сгенерирован файл _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