Отправка текущей метки времени в 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');
который должен быть добавлен в исходный заголовок (было бы лучше как комментарий, но не могу комментировать, но:))