-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Description
Bug Report
| Q | A |
|---|---|
| BC Break | yes |
| Version | 2.15.5 |
Summary
When the option enable_lazy_ghost_objects is enabled, calling a function not getter/setter on an entity can break the code.
Current behavior
An entity used from relation (with proxy) can execute function code without entity data. You need to explicitly call a property to load the entity data.
How to reproduce
I'm upgrading a project from Sylius 1.12 to 1.13.2.
During the upgrade, I have set the enable_lazy_ghost_objects to true to remove deprecation.
But, if enable_lazy_ghost_objects is true I have an error when I try to access Sylius Ressource translation from a relation.
In Sylius, you have an entity (resource) named Product that can be translated (ProductTranslation).
On the Product, I have a method called getTanslation(?string $local = null) to get the current translation or requested translation by $local parameter. This method throws an exception if the current local and the $local parameter are null.
I added a new entity (resource) named Tag with a one-to-many relation to Product.
When I execute $tag->getFirstProduct()->getTranslation()->getName(); the exception is thrown because the product is not loaded.
Expected behavior
The data of Product entity must be loaded when getTranslation() is called.
Source issue: doctrine/DoctrineBundle#1809
Sylius Issue: Sylius/SyliusResourceBundle#901