I am building a REST API using Symfony2, Doctrine, FOSRestBundle and JMSSerializer.
The issue I am having is when serializing my entities, the serializer pulls in any related entities. Eg for a task that is part of a story which is part of a board, so when serializing the task I get output that includes the story which includes the board, which then includes all other stories on the board.
Is there an easy way to limit this, and just include the foreignIds instead?
Check the Serializer/Handler/DoctrineProxyHandler.php file on JMSSerializerBundle. Now, if you comment this line:
It will stop lazy loading your entities. If this is what you’re looking for, then just go ahead and create your own handler where you don’t lazy load.
If this isn’t correct, I recommend that you customize your entities before sending them to JMSSerializerBundle at your taste. For example, in any related entities I want the ID, while in others i need a custom column name like code, or name, or anything.
I just create a copy of my entity object and then start getting the fields I need for relationships. Then, I serialize that copy. JMSSerializerBundle won’t lazy load because I already provided the proper fields.