Как использовать Jenssegers \ Mongodb \ Eloquent \ Model вместо Illuminate \ Database \ Eloquent \ Model в команде php artisan make: model - PullRequest
0 голосов
/ 09 ноября 2018

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

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

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

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

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

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

use Path\To\Class\MyCustomClassGenerator;

Artisan::command('make:model', function(){
  new MyCustomClassGenerator();
  $this->comment('new MongoDB Model generated');
});
0 голосов
/ 09 ноября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...