Serializar entidades con relacións usando JMSSerializerBundle para #Symfony2
Sigo pelexando para aprender e entender este marco de traballo tan completo e complexo como é Symfony2. A batalla de hoxe centrouse na representación de obxectos recollidos da base de datos. O esquema que tiña construido ata agora centrábase en vistas html, pero plantexouse a necesidade de devolver datos en formatos distintos como 'json' ou 'xml'.Â
SF2 facilita a serializacion de obxectos incluindo o compoñente "Serializer". Mais tamén se pode botar man de JMSSerializer e JMSSerializerBundle. Ambos dispoñibles a traves de composer (os detalles da instalación están convintemente explicados na documentación).
Unha vez instalado e configurado (ver documentación), o compoñente funciona perfectamente con obxectos simples, pero cando se trata de usar entidades que teñen algún tipo de relación entre elas (OneToMany, ManyToOne), a aplicación devolve un erro.
Isto débese a que, para facilitar a obtención das propiedades relacionadas, Doctrine usa un proceso que denominan "lazy loading". O 'serializer' non se entende moi ben con iso e resulta que se perde polo camiño das relacións.
Para solucionar iso (e isto levoume atopalo/entendelo medio dÃa) hai que botar man das anotacións, especÃficas do 'serializer', nas clases que definen as entidades.
Básicamente hai que excluir do proceso ás propiedades que relaciona as entidades. Tal e como se explica nesta ligazón.

















