Я использую полиморфные отношения в своих моделях, а с полиморфными отношениями я хочу использовать карту Moprph. Чтобы реализовать концепцию карты морфинга, я написал собственного поставщика услуг и зарегистрировал его в app.php. Все работает нормально, кроме карты морфинга. Morphmap не работает даже с AppServiceProvider. Пожалуйста, взгляните на мой код
Поставщик услуг
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()
{
//
}
}
Это то, о чем я хочу спросить, поскольку я новичок в Laravel. Я выполнил все описанные шаги, чтобы использовать MorphMap. Но все же чего-то не хватает, поэтому он не работает.
Кроме того, поделитесь своим кодом отношения модели в своем вопросе.
В этом документе они нигде не упоминали использование строчных букв вместо заглавных букв. Но все же я выполнил вашу инструкцию, и она все еще не работает @ MD Лясин Арафат
Не могли бы вы поделиться с нами кодом вашей модели взаимоотношений? Возможно, ваша проблема с другими вещами и с каким типом ваших проблем вы столкнулись, также поделятся вашими ошибками.
Я разобрался в проблеме. Я использовал пути таких моделей, как «App \ FirstName», а не его классы, такие как FirstName :: Class. Но моя проблема еще не решена, так как она работает нормально, если я добавлю ее в AppServiceProvider, но она не работает в отдельном поставщике услуг. Хотя в моей модели проблем нет, но я тоже разделяю ее модель.






Я тоже столкнулся с этой ситуацией. Наконец, я решил эту проблему, выполнив команду 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. Дополнительная ссылка:
Документ Laravel: Конфигурация
services.php обновлятьсяbootstrap/cache/config.php, посмотрите, что там внутри. providers является частью конфигурации приложенияпроверить Illuminate\Foundation\Http\Kernel
protected $ bootstrappers = [ \ Illuminate \ Foundation \ Bootstrap \ LoadEnvironmentVariables :: class, \ Illuminate \ Foundation \ Bootstrap \ LoadConfiguration :: класс, \ Illuminate \ Foundation \ Bootstrap \ HandleExceptions :: class, \ Illuminate \ Foundation \ Bootstrap \ RegisterFacades :: class, \ Illuminate \ Foundation \ Bootstrap \ RegisterProviders :: класс, \ Illuminate \ Foundation \ Bootstrap \ BootProviders :: класс, ];
Illuminate\Foundation\Bootstrap\LoadConfigurationIlluminate\Foundation\Application, registerConfiguredProvidersНаконец, я должен сказать, что я новичок в laravel. Если я допустил ошибку, дайте мне знать. Спасибо.