leandrodiogenes/laravel-auto-morph-map
Automatically generates and manages morph maps for Laravel polymorphic relationships, so you no longer maintain a manual morphMap array by hand. Keeps model aliases consistent and simplifies storing polymorphic types in the database.
composer require <vendor>/<package>:^9.0 and verify composer why-not laravel/framework 9.* comes back clean before you write any code.composer.json is the authoritative source for its PHP, Illuminate, and Symfony constraints — read it rather than trusting the one-line release note.php artisan vendor:publish --provider="<Vendor>\<Package>\<PackageServiceProvider>" (add --tag=config, --tag=migrations as applicable). Commit the published config to version control so environment differences are explicit. Run php artisan migrate if the package ships migrations.composer.json (constraints), its CHANGELOG.md/upgrade guide (the release note is too terse to be your only source), the service provider (what it binds, aliases, and publishes), then the config file (the real API surface for most packages).laravel/framework to ^9.0 first, run your test suite green, then bump the package to ^9.0. Attempting both at once makes a failure impossible to attribute.env() in the config file only — never call env() outside config, especially once config:cache is in play.handle(). Keep the serialized job payload free of package internals; resolve them at execution time so retries pick up fresh config.Package::fake() or a swap-able binding, use it in feature tests. If it doesn't, bind a mock to its interface in a test service provider — that's the supported extension point.^9.0 to have removed illuminate/*:^8.0 from its constraints. Any app still on Laravel 8 cannot take this release; plan the framework upgrade as a prerequisite, not an afterthought.env() at runtime, php artisan config:cache in production will silently break it. Test with config:cache enabled, not just locally.vendor:publish --force overwrites your edits. After the first publish, stop re-publishing. Instead, diff the package's new config against yours during upgrades and merge deliberately.php artisan package:discover and php artisan optimize:clear before debugging deeper.app()->make(Interface::class) in php artisan tinker to prove the binding exists, then composer why-not to prove the constraints resolve. Those two commands answer the majority of "package won't load" questions.How can I help you explore Laravel packages today?