我在我的模型中使用多态关系,并且我希望使用Moprph映射的多态关系。为了实现变形映射的概念,我编写了自己的服务提供程序并在app.php中注册了它。除了Morph地图,一切都很好。即使使用AppServiceProvider,Morphmap也无法正常工作。请查看我的代码
服务提供商
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Eloquent\Relations\Relation;
class MorphServiceProvider extends ServiceProvider
{
/**
* Bootstrap services.
*
* @return void
*/
public function boot()
{
Relation::morphMap([
'First' => FirstModel::class,
'Second' => SecondModel::class,
'Third' => ThirdModel::class
]);
}
/**
* Register services.
*
* @return void
*/
public function register()
{
//
}
}
答案 0 :(得分:3)
我也遇到了这种情况。最后,我通过运行artisan命令解决了这个问题:
php artisan cache:clear
未加载新的自定义服务。检查bootstrap/cache/services.php
以查看新的ServiceProvider是否在providers
<?php return array (
'providers' =>
array (
0 => 'Illuminate\\Auth\\AuthServiceProvider',
1 => 'Illuminate\\Broadcasting\\BroadcastServiceProvider',
2 => 'Illuminate\\Bus\\BusServiceProvider',
3 => 'Illuminate\\Cache\\CacheServiceProvider',
4 => 'Illuminate\\Foundation\\Providers\\ConsoleSupportServiceProvider',
5 => 'Illuminate\\Cookie\\CookieServiceProvider',
6 => 'Illuminate\\Database\\DatabaseServiceProvider',
7 => 'Illuminate\\Encryption\\EncryptionServiceProvider',
8 => 'Illuminate\\Filesystem\\FilesystemServiceProvider',
//...
默认情况下,此文件应在app.php
更改后自动更新。
在我的情况下,我之前意外地运行了命令php artisan config:cache
。这样可以防止services.php
更新。进一步参考:
services.php
更新bootstrap/cache/config.php
,查看里面的内容。 providers
是应用程序配置检查Illuminate\Foundation\Http\Kernel
protected $ bootstrappers = [ \照亮\基金会\引导程序\ LoadEnvironmentVariables ::类, \照亮\基金会\引导程序\ LoadConfiguration ::类, \照亮\基金会\引导程序\ HandleExceptions ::类, \照亮\基金会\引导程序\ RegisterFacades ::类, \照亮\基金会\引导程序\ RegisterProviders ::类, \照亮\基金会\引导程序\ BootProviders ::类, ];
Illuminate\Foundation\Bootstrap\LoadConfiguration
Illuminate\Foundation\Application
,registerConfiguredProviders
最后,我不得不说我对laravel很新。如果我犯了一些错误,请告诉我。谢谢。