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

3
我正在使用Laravel和MongoDB (jenssegers/laravel-mongodb) 开发Web应用程序。
在使用 php artisan make:model 命令创建新模型时,命令会在文件中使用 Illuminate\Database\Eloquent\Model 声明,每次都需要手动替换为 Jenssegers\Mongodb\Eloquent\Model
是否有自动化处理的方法?
2个回答

2
这个包似乎没有提供一个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
另一种方法是编写自己的类生成器,然后覆盖命令make:model
在文件routes/console.php中添加以下内容以覆盖该命令。
use Path\To\Class\MyCustomClassGenerator;

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

1
当然,如果你想在关系型数据库的旁边使用MongoDB,那么问题就来了,它会使正常命令变得毫无用处。公平地说,同时使用两种数据库的情况非常罕见(尽管我曾经继承过一个使用Laravel和MongoDB共同开发的项目)。 - Matthew Daly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接