Buen dia/tarde/noche a la comunidad de libros web.
Mi cuestion es la siguiente:
Tengo una consulta dql donde reviso si existe un prestamo pero a partir de dos relaciones (usuario y salon):
public function findByVerificacion($usuario, $salon){ $em = $this->getEntityManager(); $consulta = $em->createQuery(' SELECT p.id, p.fechaInicio, p.fechaFin FROM SalonesBundle:PrestamoSalon p WHERE p.users = :usuario AND p.sala = :salon '); $consulta->setParameter('usuario',$usuario); $consulta->setParameter('salon',$salon); $consulta->setMaxResults(1); $consulta->getResult(); return $consulta; }
La consulta funciona, pero me interesa saber si hay posibilidad de obtener los parametros que le doy al Select (con el objetivo de comparar las fechas con la fecha actual), lo he hecho de las siguientes formas:
$iden = $consulta[0]['id'] //segun la guia de doctrine; $iden = $consulta->'id' $iden = $consulta->getId();
Ninguna sin un resultado, y dandome cuenta en el proceso que lo que se maneja es un objeto de tipo "Doctrine\ORM\Query", no se si haya la posiblidad de convertir este objeto a un array.
Para finalizar dejo las relaciones con la entidad y el controlador donde hago la busqueda:
/** * @ORM\ManyToOne(targetEntity="Salones", inversedBy="psalas") * @ORM\JoinColumn(name="salon_id", referencedColumnName="id", onDelete="CASCADE") */ private $sala; /** * @ORM\ManyToOne(targetEntity="Proyecto\AdminBundle\Entity\Usuarios", inversedBy="psalas") * @ORM\JoinColumn(name="usuario_id", referencedColumnName="id", onDelete="CASCADE") */ private $users;
public function verificarPrestamoAction(Request $request){ $id = $request->request->get('iden'); $salon = $request->request->get('salones'); $em = $this->getDoctrine()->getEntityManager(); $consulta = $em->getRepository('SalonesBundle:PrestamoSalon')->findByVerificacion($id,$salon); if(!$consulta){ return $this->render('@Salones/PrestamoSalon/tools/resultado.html.twig', array( 'mensaje' => 'El usuario no tiene un prestamo activo en este salon' )); } return $this->render('@Salones/PrestamoSalon/tools/resultado.html.twig', array( 'mensaje' => 'El usuario tiene un prestamo activo en este salon.' )); }
Un saludo y agradezco de antemano su ayuda.
Respuestas
Simplemente era retornar en el repositorio:
return $consulta->getResult();
Y funcionaba con:
$finicio = $consulta[0]['fechaInicio']->format('Y:m:d H:i:s'); $ffin = $consulta[0]['fechaFin']->format('Y:m:d H:i:s');
Saludos a la comunidad de Librosweb.
@Andres11362