Я разрабатываю веб-приложение с Laravel и MongoDB (jenssegers / laravel-mongodb).
При создании новой модели с php artisan make:model
, команда использует Illuminate\Database\Eloquent\Model
объявление в файле и каждый раз, когда мне нужно заменить Illuminate\Database\Eloquent\Model
с Jenssegers\Mongodb\Eloquent\Model
вручную.
Есть ли способ автоматизировать процесс?
Не похоже, что пакет предоставляет команду Artisan для создания заглушки модели MongoDB, что выглядит как недосмотр. Тем не менее, не так уж сложно создать такую команду генератора для Artisan самостоятельно, если она вам нужна.
Команда make модели находится в https://github.com/laravel/framework/blob/5.7/src/Illuminate/Foundation/Console/ModelMakeCommand.php и стаб-файл, используемый для его создания, находится в https://github.com/laravel/framework/blob/5.7/src/Illuminate/Foundation/Console/stubs/model.stub. Если вы расширите класс команд, чтобы заменить файл-заглушку на версию MongoDB, и измените файл-заглушку на модель MongoDB, то вы сможете создать команду для генерации моделей MongoDB. Возможно, стоит добавить пакет, чтобы добавить его, и отправить запрос на включение, чтобы добавить его в пакет. Я хотел бы обратиться к той части документации Laravel, которая касается Artisan, для получения более подробной информации, поскольку в ней подробно описывается процесс добавления ваших собственных команд Artisan.
Другой подход — написать собственный генератор классов, а затем переписать команду make:model
Добавьте следующее в файл routes/console.php
переопределить команду
use Path\To\Class\MyCustomClassGenerator;
Artisan::command('make:model', function(){
new MyCustomClassGenerator();
$this->comment('new MongoDB Model generated');
});