Отправка текущей метки времени в CakePHP
Каков метод отправки текущей метки времени непосредственно на INSERT
или UPDATE
? Если бы я запускал обычный SQL,я бы использовал функцию NOW()
для конкретного поля SQL при отправке. Как бы я это сделал с CakePHP?
$this->Model->save($this->data)
4 ответа:
В CakePHP можно включить функцию
NOW()
unescaped, используяDboSource::expression
$this->data['SomeModel']['your_datetime_field'] = DboSource::expression('NOW()'); $this->Model->save($this->data);
Это предпочтительный способ включения функций MySQL в ваши сохранения.
При добавлении созданных и измененных столбцов в таблицу они будут автоматически заполнены текущей меткой времени. Если дело обстоит иначе-то есть вы хотите заполнить поле, которое позже вы хотите изменить, вероятно, лучше всего использовать решение эдориана.
Вы можете установить поле timestamp для автоматической инициализации и автоматического обновления
timestampfield TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Это может показаться тривиальным для опытных пользователей, но для начинающих может быть полезно также предоставить код использования:
App::uses('DboSource', 'Model/DataSource');
, который должен быть добавлен в голову источника (было бы лучше в качестве комментария, но пока не могу комментировать:))