validar fecha de expiracion

261 views
Skip to first unread message

Javier Marcon

unread,
May 28, 2012, 5:05:40 PM5/28/12
to symfo...@googlegroups.com
Estoy tratando de validar en un proyecto que usa sf 1.4 y Doctrine,
que el usuario que se loguea no esté expirado (comparando un campo
date), pero siempre obtengo false y no encuentro como hacerlo. La
fecha de vencimiento está en el campo expire_date que es de tipo date
de mysql. La idea es que si la fecha de expire_date es anterior a hoy,
que haga el setFlash y el redirect.
Probé con:

actions.class.php:

if (!Doctrine_Core::getTable('customProduct')->Vencimiento($this->form->getValue("usuario")))
{
$this->getUser()->setFlash("error", "Su servicio se encuentra vencido.");
$this->redirect("@user_login");
}

customProductTable.class.php:

public static function Vencimiento($admin)
{
$q = Doctrine_Query::create()
->from('customProduct cp')
->Where('cp.owner = ?', $admin)
->andWhere('cp.expire_date > ?', date('Y-m-d h:i:s', time()));

return $q->execute();
}

Tambien probé comparar el registro con time(), probe varias otras
cosas y siempre obtengo false, independientemete de la fecha que esté
en el campo expire_date.

Alguien tiene alguna sugerencia de como puedo vaildarlo?

Gracias,

Javier.

Roberto Notario

unread,
May 28, 2012, 5:09:36 PM5/28/12
to symfo...@googlegroups.com

La función vencimiento ya te está devolviendo cuentas vencidas. Quita la negación de la consulta del actions.class

--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es

Javier Marcon

unread,
May 29, 2012, 8:42:12 AM5/29/12
to symfo...@googlegroups.com
Gracias, pero al probarlo cambiando la fecha de vencimiento en la base
de datos, independientemente de si la fecha es anterior o posterior a
la actual, me devuelve false sin la negación en el if de
actions.class.php.

Javier Marcon

unread,
May 29, 2012, 11:49:27 AM5/29/12
to symfo...@googlegroups.com
Lo que noté es que la consulta doctrine siempre me devuelve false,
independientemete de la fecha, incluso le puse un now para evitar que
esté mal el formato de la fecha:

public static function Vencimiento($admin)
{
$q = Doctrine_Query::create()
->from('customProduct c')
->Where('c.owner = ?', $admin)
->andWhere('c.expire_date > NOW()');
$cant = $q->count();
$sq = $q->getSqlQuery();
if ($cant > 0)
{
return true;
}
else
{
return false;
}
}

Ya verifiqué que $admin tenga el nombre de usuario bien. Al obtener el
sql generado con getSqlQuery(), lo corro en el server mysql y me trae
el registro.

Como depuro por que devuelve siempre false y ningun error?

Gracias,

Javier.

El día 29 de mayo de 2012 09:42, Javier Marcon
<javier...@gmail.com> escribió:

Jakala

unread,
May 29, 2012, 11:55:05 AM5/29/12
to symfo...@googlegroups.com
... no se si va por ahi los tiros, pero...

primero calculas $cant, y luego llamas a la consulta???

        $cant = $q->count(); 
        $sq = $q->getSqlQuery(); 

no sera mejor:

        $sq = $q->getSqlQuery(); 
        $cant = $q->count(); 

??

digo, porque todavia no tengo mucha idea del dql y no lo he usado de momento...

Ismael Ambrosi

unread,
May 29, 2012, 12:04:49 PM5/29/12
to symfo...@googlegroups.com
Funciona sin la condición de la fecha?

Javier Marcon

unread,
May 29, 2012, 12:07:08 PM5/29/12
to symfo...@googlegroups.com
El getSqlQuery me trae el sql generado por la consulta:

SELECT c.id AS c__id, c.owner AS c__owner, c.domain AS c__domain,
c.start_date AS c__start_date, c.expire_date AS c__expire_date,
c.product_id AS c__product_id, c.custom_heb_type AS
c__custom_heb_type, c.custom_heb_type_fld AS c__custom_heb_type_fld,
c.country_code AS c__country_code FROM custom_product c WHERE (c.owner
= 'asdf1234' AND c.expire_date > NOW())

El count cuenta los registros, pero ambos deberian ejecutarse despues
de haber ejecutado la consulta. Igual probé ponerlo antes y después el
count(), probé con:

$sq = $q->getSqlQuery();
$cant = $q->execute()->count();

Y probé otras alternativas, pero siempre devuelve false.

Gracias,

Javier.

Javier Marcon

unread,
May 29, 2012, 12:35:42 PM5/29/12
to symfo...@googlegroups.com
Perdon, me acabo de dar cuenta que el error no es de doctrine, es
porque en el databases.yml tenia configurada una base de datos
distinta a la que creia y que probaba con sql (pero que tenia la misma
estructura).

Gracias a todos y perdon por molestarlos con esto..

Javier.

El día 29 de mayo de 2012 13:04, Ismael Ambrosi
<ismaa...@gmail.com> escribió:
Reply all
Reply to author
Forward
0 new messages