Skip to content
Pablasso

Usando funciones de MySQL en CakePHP

Algo que me atrasó 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 función de MySQL, esta obviamente no se ejecuta.

Por ejemplo, esto que busca que el campo created sea más reciente que hace 1 día, no funcionaría:

$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.

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