繁体   English   中英

如何在php artisan make:model命令中使用Jenssegers \\ Mongodb \\ Eloquent \\ Model代替Illuminate \\ Database \\ Eloquent \\ Model

[英]How to use Jenssegers\Mongodb\Eloquent\Model instead of Illuminate\Database\Eloquent\Model in php artisan make:model command

我正在使用Laravel和MongoDB(jenssegers / laravel-mongodb)开发一个Webapp。

在使用php artisan make:model创建新模型时,该命令在文件中使用Illuminate\\Database\\Eloquent\\Model声明,每次我需要用Jenssegers\\Mongodb\\Eloquent\\Model手动替换Illuminate\\Database\\Eloquent\\Model Jenssegers\\Mongodb\\Eloquent\\Model

有没有办法使流程自动化?

软件包似乎没有提供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命令的过程。

另一种方法是编写自己的类生成器,然后覆盖命令make:model

在文件routes/console.php添加以下内容以覆盖命令

use Path\To\Class\MyCustomClassGenerator;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM