Как использовать Jenssegers \ Mongodb \ Eloquent \ Model вместо Illuminate \ Database \ Eloquent \ Model в команде php artisan make: model

Я разрабатываю веб-приложение с Laravel и MongoDB (jenssegers / laravel-mongodb).

При создании новой модели с php artisan make:model, команда использует Illuminate\Database\Eloquent\Model объявление в файле и каждый раз, когда мне нужно заменить Illuminate\Database\Eloquent\Model с Jenssegers\Mongodb\Eloquent\Model вручную.

Есть ли способ автоматизировать процесс?

1

Решение

Не похоже, что пакет предоставляет команду 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.

1

Другие решения

Другой подход — написать собственный генератор классов, а затем переписать команду make:model

Добавьте следующее в файл routes/console.php переопределить команду

use Path\To\Class\MyCustomClassGenerator;

Artisan::command('make:model', function(){
new MyCustomClassGenerator();
$this->comment('new MongoDB Model generated');
});
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector