Sigueme en Twitter
«Anterior | Siguiente»

Usando funciones de MySQL en CakePHP

11/03/2008

Algo que me atraso en la madrugada era que CakePHP escapa todas las condicionales que le mandas en una consulta SQL, y si la condicional de casualidad esta formada con una funcion de MySQL, esta obviamente no se ejecuta.

Por ejemplo, esto no funcionara: (busca que el campo created sea mas reciente que hace 1 día)

1
2
3
4
5
$conditions = array
    (
        "created" => "> date_sub( curdate(), interval 1 day)"
    );
$this->Model->findAll( $conditions, null, "depart_date ASC");

Para evitar esto CakePHP implementa un operador mágico “-!” que le indica no escapar esa sentencia y nuestra consulta se ejecute como pretendemos.

1
2
3
4
5
$conditions = array
    (
        "created" => "> -!date_sub( curdate(), interval 1 day)"
    );
$this->Model->findAll( $conditions, null, "depart_date ASC");

Voilà!


Hay 3 comentarios:

  1. 11/03/2008DbRunas - Usando funciones de MySQL en CakePHP dice:

    [...] Por ejemplo, esto no funcionara: (busca que el campo created sea mas reciente que hace 1 día)MAs: http://www.pablasso.com/2008/03/11/usando-funciones-de-mysql-en-cakephp [...]

  2. 11/03/2008David Valdez dice:

    Y quien te paso ese tip?

    yo me pregunto POR QUE NO DOCUMENTAN ESAS VALIOSISISISISISISISISISISISISISISIMAS cosas :p

  3. 11/03/2008pablasso dice:

    Esto preguntando en el IRC de cake me lo dijeron, 100% de acuerdo hay muchas cosas no documentadas (ya estuviéramos) y que no son nada intuitivas.

Escribe tu comentario:

¿Escribiste código? [+]

Para hacerlo más legible puedes utilizar la etiqueta <pre>.
Ejemplo: <pre lang="php" line="1"> código </pre>
  • El atributo lang indica el lenguaje de programación.
  • El atributo line indica desde donde comienza la numeración.


  Los mas frikis pueden suscribirse a los comentarios por RSS.