Почему CakePHP формирует оператор INSERT с CURRENT_TIMESTAMP в кавычках? - PullRequest
3 голосов
/ 04 августа 2011

Я получаю эту ошибку, потому что cakephp 1.3.11 создает инструкцию INSERT с CURRENT_TIMESTAMP в кавычках. Аналогичная вещь работала в 1.3.9. Что я могу делать не так?

 SQL Error: 1292: Incorrect datetime value: 'CURRENT_TIMESTAMP' for column 'time_posted' at row 1 [CORE\cake\libs\model\datasources\dbo_source.php, line 684]

Это контекстный запрос:

$sql    =   "INSERT INTO `my_table` (`time_posted`, `version`, `provider`, `date`) VALUES ('CURRENT_TIMESTAMP', 0, 'provider', '2011-08-03 16:11:00')"

Я пытаюсь создать новую запись в базе данных из CakePHP, используя этот код:

class MyTable extends AppModel
{
...
function blah() {
...
$this->create()
$ret=$this->save(array('MyTable'=>array('provider'=>$provider,'date'=>$datetime)));
...

вот стек:

DboSource::showQuery() - CORE\cake\libs\model\datasources\dbo_source.php, line 684
DboSource::execute() - CORE\cake\libs\model\datasources\dbo_source.php, line 266
DboSource::create() - CORE\cake\libs\model\datasources\dbo_source.php, line 752
Model::save() - CORE\cake\libs\model\model.php, line 1342
MyTable::add() - APP\models\my_table.php, line 1288

1 Ответ

2 голосов
/ 04 августа 2011

Как сказал Данхамзз, должно быть место, в котором вставляется CURRENT_TIMESTAMP.

Как только вы его найдете, вы можете использовать date('Y-m-d H:i:s') для сохранения с использованием текущего времени.Или, если вы хотите сделать это с помощью SQL, вы можете использовать DboSource::expression('NOW()').

т.е..

array('MyTable'=>array('time_posted' => DboSource::expression('NOW()')))

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