我正在使用Laravel和MongoDB(jenssegers / laravel-mongodb)开发一个Webapp。
在使用php artisan make:model
创建新模型时,该命令在文件中使用Illuminate\Database\Eloquent\Model
声明,并且每次我需要用Illuminate\Database\Eloquent\Model
手动替换Jenssegers\Mongodb\Eloquent\Model
时。
有没有办法使流程自动化?
答案 0 :(得分:1)
软件包似乎没有提供Artisan命令来创建MongoDB模型存根,这似乎有点疏忽。但是,如果需要,可以为Artisan自己创建这种生成器命令并不是很难。
模型制作命令位于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 :(得分:1)
另一种方法是编写自己的类生成器,然后覆盖命令make:model
在文件routes/console.php
中添加以下内容以覆盖命令
use Path\To\Class\MyCustomClassGenerator;
Artisan::command('make:model', function(){
new MyCustomClassGenerator();
$this->comment('new MongoDB Model generated');
});