Hola tengo este problema: para obtener el id
de una clase me da problemas y dice:
Error: Call to a member function getId() on a non-object
Quisiera que me ayudaran en esto a ver que solución le puedo dar. Mis saludos y esperaré por su respuesta y ayuda:
public function mostrarEvaluacionCompletaAction($id) { $em = $this->getDoctrine()->getManager(); $consulta = $em->getRepository('EvaluacionBundle:Evaluacion')->findBy(array('proyecto'=>$id)); $consulta1 = $em->getRepository('EvaluacionBundle:CriterioGeneral')->findBy(array('evaluacion'=> $consulta->getId())); $consulta2 = $em->getRepository('EvaluacionBundle:SubCriterio')->findBy(array('criterioG'=>$consulta1->getId())); $consulta3 = $em->getRepository('EvaluacionBundle:Puntuacion')->findBy(array('subCriterio'=>$consulta2->getId())); $p = $em->getRepository('EvaluacionBundle:Puntuacion')->findById($consulta3->getId()); return $this->render('EvaluacionBundle:Default:Evaluacion.html.twig', array( //'evaluacion'=>$ev, 'criteriogeneral'=>$consulta1, 'subcriterio'=>$consulta2, 'puntuacion'=>$p, 'id'=> $id )); }
Respuestas
Como en el código que muestras utilizas el ->getId()
en varios sitios y como el error no da más detalles, nos tendrías que decir exactamente en qué línea se está produciendo el error.
En cualquier caso, parece claro que el error se produce porque alguna de las variables $consulta
es null
y por tanto, no es un objeto sobre el que se pueda ejecutar el método getId()
.
Deberías mirar una a una el resultado devuelto por cada consulta. Si usas una versión moderna de Symfony, puedes usar la función dump()
para mostrar el contenido de la variable que te devuelve Doctrine. Si usas una versión antigua, recuerda que al hacer var_dump()
sobre la consulta se te va a colgar el navegador, así que usa en su lugar la función que te da Doctrine:
// Symfony moderno dump($consulta); // función PHP que colgará tu navegador var_dump($consulta); // utilidad de Doctrine para versiones viejas de Symfony \Doctrine\Common\Util\Debug::dump($consulta);
@javiereguiluz