Buscar por metodo findOneBy con parametro fecha

261 views
Skip to first unread message

Danny alfonzo Viana perez

unread,
Mar 24, 2012, 1:29:42 PM3/24/12
to symfo...@googlegroups.com
saludos, fijense tngo esta consulta, 

$oferta = $em->getRepository('OfertaBundle:Oferta')->findOneBy(array(
'ciudad' => 38,
'fecha_publicacion' => new \DateTime('today')
));

acabo de cargar los fixtures con el campo $oferta->setFechaPublicacion(new \DateTime()); osea que existen registros de hoy para esta ciudad, pero no me trae resultados

pero con esta consulta:

$oferta = $em->getRepository('OfertaBundle:Oferta')->findOneBy(array(
'ciudad'  => 38
));

si me trae, NOTA: se que me van a decir que use DQL pero todavia no voy por ese paso y el libro que estoy leyendo dice que esa consulta funciona y queria sabar si estoy haciendo algo mal.

tambien probe con format() y se puso peor

$hoy = new \DateTime('today');
$oferta = $em->getRepository('OfertaBundle:Oferta')->findOneBy(array(
'ciudad'  => 38,
'fecha_publicacion' => $hoy->format('Y-m-d H:i:s')
));

me da un error que me dice que format() no es un objeto en /.path.../.path.../vendor/doctrine-dbal/lib/Doctrine/DBAL/Types/DateTimeType.php on line 44



Message has been deleted

@neftaliaf

unread,
Mar 27, 2012, 6:52:53 AM3/27/12
to symfony-es
Entra en el profiler y busca en el log la SQL que estás ejecutando,
por ejemplo:

WHERE c1_.id = ? AND o0_.fecha_publicacion <= ?
ORDER BY o0_.fecha_publicacion DESC LIMIT 1 (["35",{"date":"2012-03-27
23:59:59","timezone_type":3,"timezone":"Europe\/Madrid"}])

Cambia los interrogantes ? por el código que le corresponda entre
corchetes... y ejecuta la consulta resultante en tu gestor de BD.
Seguramente la fecha/hora que tienes en BD no coincide con la que
estás solicitando en la SQL ;-)

Suerte!




On Mar 24, 6:29 pm, Danny alfonzo Viana perez

Danny alfonzo Viana perez

unread,
Mar 27, 2012, 6:34:25 PM3/27/12
to symfo...@googlegroups.com
Gracias, la cosa es que el DQL ejecutado es:

SELECT t0.id AS id1, t0.nombre AS nombre2, t0.slug AS slug3, t0.descripcion AS descripcion4, t0.condiciones AS condiciones5, t0.foto AS foto6, t0.precio AS precio7, t0.descuento AS descuento8, t0.fecha_publicacion AS fecha_publicacion9, t0.fecha_expiracion AS fecha_expiracion10, t0.compras AS compras11, t0.umbral AS umbral12, t0.revisada AS revisada13, t0.ciudad_id AS ciudad_id14, t0.tienda_id AS tienda_id15 FROM Oferta t0 WHERE t0.ciudad_id = ? AND t0.fecha_publicacion = ?
Parameters: ['1', Object(DateTime)]
Time: 23.77 ms
 

pero el parámetro Object(DateTime) no me dice que valor envía? creo que asumiendo que new \DateTime('today') dice "today" no debería incluir la hora minuto y segundos
Reply all
Reply to author
Forward
0 new messages