Поле метки времени cakePHP не сохранено должным образом - PullRequest
2 голосов
/ 23 марта 2011

У меня есть запись с полем timestamp, значение которого по умолчанию определяется как current_timestamp в базе данных mySql.Я использую код:

$this->Ad->Click->create();
$this->Ad->Click->set('ad_id',  $id);
$this->Ad->Click->save($this->data);

после того, как запись сохранена, поле отметки времени остается в положении 00:00:00.почему это так?

конечно, я понимаю, что могу использовать функции времени php для установки значения поля или функции mySQL в запросе ... но я предпочитаю 'сатандарный путь'.

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Если вы установите имя поля в «создан», Cake будет автоматически использовать текущую дату и время при создании записи.

http://book.cakephp.org/view/1015/created-and-modified

2 голосов
/ 26 июня 2011

После дальнейшего изучения проблемы возникает проблема с тем, как CakePHP обрабатывает ключевое слово CURRENT_TIMESTAMP

"Но CakePHP не понимает ключевое слово CURRENT_TIMESTAMP и поэтому обрабатывает его как строку и переносит егов кавычках. "- http://techlog.p2061.org/2009/04/17/cakephp-and-current_timestamp/

Чтобы включить поведение по умолчанию в базе данных, вы можете внести в черный список поле, которое вы хотите установить в БД, чтобы CakePHP не обрабатывал его: http://nuts -and-bolts-of-cakephp.com / 2009/03/11 / blacklist-your-model-fields-for-save /

Несмотря на то, что занесение в черный список работает, я решил использовать методустановки значения поля перед сохранением.В этом случае важно убедиться, что время сервера приложений и сервера базы данных синхронизировано!

$this->data['Ad']['time'] = date('c');

Я знаю, вы сказали, что это не то, что вы хотели, но, похоже, этонемного проще исправить на мой взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...