spatie / laravel-event-sourcing

The easiest way to get started with event sourcing in Laravel
https://docs.spatie.be/laravel-event-sourcing
MIT License
768 stars 164 forks source link

this is probably not related to this package, but hear me out #465

Closed Ham3D closed 4 months ago

Ham3D commented 4 months ago

I use this package by storing a class as properties of an event, then recreating the class and running a method within it. This approach works fine for most classes, but I'm encountering an issue with one particular class. The error message is:

"Method Illuminate\Support\Collection::getRouteKey does not exist."

This error doesn't seem related to the package itself. I suspect it might be related to the normalizer. Could someone please help me figure this out?

this is the whole stack: ```{ "message": "Method Illuminate\\Support\\Collection::getRouteKey does not exist.", "exception": "BadMethodCallException", "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Macroable/Traits/Macroable.php", "line": 112, "trace": [ { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Http/Resources/DelegatesToResource.php", "line": 22, "function": "__call", "class": "Illuminate\\Support\\Collection", "type": "->" }, { "file": "/var/www/html/vendor/symfony/property-access/PropertyAccessor.php", "line": 388, "function": "getRouteKey", "class": "Illuminate\\Http\\Resources\\Json\\JsonResource", "type": "->" }, { "file": "/var/www/html/vendor/symfony/property-access/PropertyAccessor.php", "line": 99, "function": "readProperty", "class": "Symfony\\Component\\PropertyAccess\\PropertyAccessor", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Normalizer/ObjectNormalizer.php", "line": 130, "function": "getValue", "class": "Symfony\\Component\\PropertyAccess\\PropertyAccessor", "type": "->" }, { "file": "/var/www/html/vendor/spatie/laravel-event-sourcing/src/Support/ObjectNormalizer.php", "line": 55, "function": "getAttributeValue", "class": "Symfony\\Component\\Serializer\\Normalizer\\ObjectNormalizer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php", "line": 183, "function": "getAttributeValue", "class": "Spatie\\EventSourcing\\Support\\ObjectNormalizer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Serializer.php", "line": 150, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php", "line": 212, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Serializer.php", "line": 150, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php", "line": 212, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Serializer.php", "line": 150, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Normalizer\\AbstractObjectNormalizer", "type": "->" }, { "file": "/var/www/html/vendor/symfony/serializer/Serializer.php", "line": 129, "function": "normalize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "/var/www/html/vendor/spatie/laravel-event-sourcing/src/EventSerializers/JsonEventSerializer.php", "line": 33, "function": "serialize", "class": "Symfony\\Component\\Serializer\\Serializer", "type": "->" }, { "file": "/var/www/html/vendor/spatie/laravel-event-sourcing/src/StoredEvents/Repositories/EloquentStoredEventRepository.php", "line": 87, "function": "serialize", "class": "Spatie\\EventSourcing\\EventSerializers\\JsonEventSerializer", "type": "->" }, { "file": "/var/www/html/vendor/spatie/laravel-event-sourcing/src/StoredEvents/Repositories/EloquentStoredEventRepository.php", "line": 115, "function": "persist", "class": "Spatie\\EventSourcing\\StoredEvents\\Repositories\\EloquentStoredEventRepository", "type": "->" }, { "file": "/var/www/html/vendor/spatie/laravel-event-sourcing/src/AggregateRoots/AggregateRoot.php", "line": 141, "function": "persistMany", "class": "Spatie\\EventSourcing\\StoredEvents\\Repositories\\EloquentStoredEventRepository", "type": "->" }, { "file": "/var/www/html/vendor/spatie/laravel-event-sourcing/src/AggregateRoots/AggregateRoot.php", "line": 123, "function": "persistWithoutApplyingToEventHandlers", "class": "Spatie\\EventSourcing\\AggregateRoots\\AggregateRoot", "type": "->" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Domain/randomChars/randomCharsAggregateRoot.php", "line": 137, "function": "persist", "class": "Spatie\\EventSourcing\\AggregateRoots\\AggregateRoot", "type": "->" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Actions/Set/Action.php", "line": 154, "function": "newActionInit", "class": "Vibot\\Configurator\\App\\Domain\\randomChars\\randomCharsAggregateRoot", "type": "::" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Actions/AbstractAction.php", "line": 364, "function": "_trigger", "class": "Vibot\\Configurator\\App\\Actions\\Set\\Action", "type": "->" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Actions/AbstractAction.php", "line": 378, "function": "forceTrigger", "class": "Vibot\\Configurator\\App\\Actions\\AbstractAction", "type": "->" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Services/MoreRandomChars/MoreRandomCharsService.php", "line": 439, "function": "trigger", "class": "Vibot\\Configurator\\App\\Actions\\AbstractAction", "type": "->" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Services/MoreRandomChars/MoreRandomCharsService.php", "line": 217, "function": "_handleNextStep", "class": "Vibot\\Configurator\\App\\Services\\MoreRandomChars\\MoreRandomCharsService", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php", "line": 355, "function": "submitPage", "class": "Vibot\\Configurator\\App\\Services\\MoreRandomChars\\MoreRandomCharsService", "type": "->" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Services/Form/FormService.php", "line": 812, "function": "__callStatic", "class": "Illuminate\\Support\\Facades\\Facade", "type": "::" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php", "line": 355, "function": "prepareSubmitPageResult", "class": "Vibot\\Configurator\\App\\Services\\Form\\FormService", "type": "::" }, { "file": "/var/www/html/vendor/projectName/someModule/src/app/Http/Controllers/MoreRandomChars/Form/FormController.php", "line": 137, "function": "__callStatic", "class": "Illuminate\\Support\\Facades\\Facade", "type": "::" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php", "line": 54, "function": "submitPage", "class": "Vibot\\Configurator\\App\\Http\\Controllers\\MoreRandomChars\\Form\\FormController", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php", "line": 43, "function": "callAction", "class": "Illuminate\\Routing\\Controller", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php", "line": 259, "function": "dispatch", "class": "Illuminate\\Routing\\ControllerDispatcher", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php", "line": 205, "function": "runController", "class": "Illuminate\\Routing\\Route", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 806, "function": "run", "class": "Illuminate\\Routing\\Route", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 144, "function": "Illuminate\\Routing\\{closure}", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php", "line": 50, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings", "type": "->" }, { "file": "/var/www/html/app/Http/Middleware/CheckForPassportToken.php", "line": 32, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "App\\Http\\Middleware\\CheckForPassportToken", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php", "line": 49, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\View\\Middleware\\ShareErrorsFromSession", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php", "line": 121, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php", "line": 64, "function": "handleStatefulRequest", "class": "Illuminate\\Session\\Middleware\\StartSession", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Session\\Middleware\\StartSession", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php", "line": 37, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse", "type": "->" }, { "file": "/var/www/html/app/Http/Middleware/CheckPassportTokenIsCustomer.php", "line": 36, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "App\\Http\\Middleware\\CheckPassportTokenIsCustomer", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php", "line": 67, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Cookie\\Middleware\\EncryptCookies", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 119, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 805, "function": "then", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 784, "function": "runRouteWithinStack", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 748, "function": "runRoute", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php", "line": 737, "function": "dispatchToRoute", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", "line": 200, "function": "dispatch", "class": "Illuminate\\Routing\\Router", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 144, "function": "Illuminate\\Foundation\\Http\\{closure}", "class": "Illuminate\\Foundation\\Http\\Kernel", "type": "->" }, { "file": "/var/www/html/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php", "line": 66, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Barryvdh\\Debugbar\\Middleware\\InjectDebugbar", "type": "->" }, { "file": "/var/www/html/app/Http/Middleware/UserInGroup.php", "line": 24, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "App\\Http\\Middleware\\UserInGroup", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php", "line": 62, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Http\\Middleware\\HandleCors", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php", "line": 39, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Http\\Middleware\\TrustProxies", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php", "line": 21, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php", "line": 31, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php", "line": 21, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php", "line": 40, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\TrimStrings", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php", "line": 27, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php", "line": 99, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 183, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php", "line": 119, "function": "Illuminate\\Pipeline\\{closure}", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", "line": 175, "function": "then", "class": "Illuminate\\Pipeline\\Pipeline", "type": "->" }, { "file": "/var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php", "line": 144, "function": "sendRequestThroughRouter", "class": "Illuminate\\Foundation\\Http\\Kernel", "type": "->" }, { "file": "/var/www/html/public/index.php", "line": 58, "function": "handle", "class": "Illuminate\\Foundation\\Http\\Kernel", "type": "->" } ] }```