Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Obtener datos de una consulta DQL en symfony

31 de julio de 2016

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

#1

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

31 julio 2016, 23:59