2010-09-29 9 views
15

¿Cuál es el método para enviar una marca de tiempo actual directamente en INSERT o UPDATE? Si estuviera ejecutando SQL de forma regular, usaría la función NOW() para el campo SQL específico en el envío. ¿Cómo haría eso con CakePHP?Envío de la marca de tiempo actual en CakePHP

$this->Model->save($this->data) 

Respuesta

21

En CakePHP, puede incluir la función NOW() sin escape mediante el uso de DboSource::expression

$this->data['SomeModel']['your_datetime_field'] = DboSource::expression('NOW()'); 
$this->Model->save($this->data); 

Este es el preferido forma de incluir funciones de MySQL en tus grabaciones.

http://api.cakephp.org/2.3/class-DboSource.html#_expression

+0

así que tendría que manipular los datos publicados antes de guardarlos. – macha

+1

Sí. Pero solo agrega un elemento más a la matriz. Además, si tiene campos en su tabla llamados 'created' y' updated', cakephp los actualizará automáticamente en las sentencias 'INSERT' y' UPDATE', respectivamente. Sin embargo, prefiero agregar el elemento manualmente. – webbiedave

+0

Whoops, make the 'created' y' modified' – webbiedave

7

si se agregan las columnas creadas y modificadas en su mesa que se rellena automáticamente con indicación de la hora actual. Si el caso es diferente, es decir, si desea rellenar un campo que luego desea modificar, probablemente sea mejor utilizar la solución de edorian.

+0

Esta es la forma de pastel y debería ser la respuesta preferida +1. Si el OP solicita un campo modificable, debería ser más específico. – benjamin

0

esto puede parecer trivial para los usuarios experimentados pero para los principiantes totales que podría ser útil para proporcionar también el código de uso:

App::uses('DboSource', 'Model/DataSource'); 

, que tiene que ser añadido a la cabeza de la fuente (sería mejor como un comentario, pero no puedo comentar, aún :))

Cuestiones relacionadas