我经常发现自己希望在我的Laravel应用程序中有更多关于模型的结构。默认情况下,模型位于App命名空间内,如果您正在处理大型应用程序,这会变得非常混乱。所以我决定在App\Models命名空间内组织我的模型。更新User模型为此,您需要做的第一件事是将User模型移动到app/Models目录并相应地更新命名空间。这需要您更新所有引用App\User类的文件。第一个是config/auth.php:'providers'=>['users'=>['driver'=>'eloquent','model'=>App\Models\User::class,//修改这里],],第二个是config/services.php文件:'stripe'=>['model'=>App\Models\User::class,//在这里修改'key'=>env('STRIPE_KEY'),'secret'=>env('STRIPE_SECRET'),],最后修改database/factories/UserFactory.php文件:$factory->define(App\Models\User::class,function(Faker$faker){...});生成模型现在我们已经更改了用户模型的命名空间,但是如何生成新模型。正如我们所知,默认情况下它们将被放置在App命名空间下。为了解决这个问题,我们可以扩展默认的ModelMakeCommand:**@paramstring$rootNamespace*@returnstring*/protectedfunctiongetDefaultNamespace($rootNamespace){return"{$rootNamespace}\Models";}}并通过将以下内容添加到AppServiceProviderDefine来覆盖服务容器中的现有绑定:**引导任何应用程序服务。**@returnvoid*/publicfunctionboot(){//}/***注册任何应用程序服务。**@returnvoid*/publicfunctionregister(){$this->app->extend('command.model.make',function($command,$app){返回rn新的ModelMakeCommand($app['files']);});}}以上是需要修改的部分现在我们可以继续生成模型了,就像我们在终端中使用:phpartisanmake:model命令,它们会在App\Models命名空间中。希望你能用得上!更多PHP知识,请访问PHPCasts
