Buenos dias a la comunidad (al menos ahora es de dia para mi ;-) ):
Mi problema es el siguiente:
Tengo un entidad, llamada Trabajador que hereda de otra entidad Persona, y cuando hago un findAll(), de la entidad Trabajador, me da todos sus campos menos el id, cosa que no ocurre cuando recupero los datos de otras entidades con findAll(). Es imprescindible que tenga un id que identifique al registro de la entidad Trabajador, porque en el lado cliente lo necesito para Backbone.
Adjunto codigo del Metodo Action del controlador, que como vereis es muy basico:
'public function get_trabajadoresAction(){ $em = $this->getDoctrine()->getManager(); $serializer = $this->get('serializer'); $repository = $this->getDoctrine()->getRepository('ModeloBundle:Persona\Trabajador'); $datos = $repository->findAll(); $response = new response($serializer->serialize($datos, 'json')); $response->headers->set('Content-Type', 'application/json'); return $response; }'
Respuestas
Según esta respuesta de StackOverflow, debes definir la propiedad id
y el getter getId()
en la entidad padre y quitarlos de la entidad hija.
Por otra parte, aunque en este caso ya es tarde, hasta los propios responsables de Doctrine desaconsejan usar la herencia. El motivo es que crea muchos más problemas de los que resuelve.
@javiereguiluz
Muchas Gracias Javier, por tu rapidisima respuesta.
Es ya la segunda o tercera vez que me salvas ;-).
Felicidades por la increible labor que haces.
Un saludo.
@Ukem_es
Hola Javier,
Ya que el uso de la herencia no se aconseja, ¿cuál es la mejor manera de hacer eso?
¿Usar embeddable?
Gracias
@ramiroanacona
@ramiroanacona la alternativa sería en efecto usar "embeddable" si hay muchos campos repetidos o incluso, repetirlos entre entidades si el número de campos no es muy grande.
@javiereguiluz