Отправка текущей метки времени в CakePHP

Каков метод отправки текущей метки времени непосредственно на INSERT или UPDATE? Если бы я работал с обычным SQL, я бы использовал функцию NOW() для конкретного поля SQL при отправке. Как я могу сделать это с помощью CakePHP?

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

Ответы

Ответ 1

В CakePHP вы можете включить функцию NOW() без сохранения с помощью DboSource::expression

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

Это предпочтительный способ включения функций MySQL в ваши сохранения.

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

Ответ 2

если вы добавите созданные и измененные столбцы в свою таблицу, они будут автоматически заполнены текущей меткой времени. Если случай отличается - т.е. Вы хотите заполнить поле, которое позже вы хотите изменить, возможно, лучше использовать edorian solution.

Ответ 3

Вы можете установить поле метки времени для автоматической инициализации и автоматического обновления

timestampfield TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

http://dev.mysql.com/doc/refman/5.0/en/timestamp.html

Ответ 4

Это может показаться тривиальным для опытных пользователей, но для начинающих в целом полезно также указать код использования:

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

который должен быть добавлен в исходный заголовок (было бы лучше как комментарий, но не могу комментировать, но:))