如何在cakephp中使用mysql now()函数获取日期字段?

pMa*_*Man 3 mysql cakephp date

我在cakephp项目中有这个代码:

$this->data['MyObject']['expire_date'] = 'NOW()';
Run Code Online (Sandbox Code Playgroud)

和...

$this->MyObject->save($this->data);
Run Code Online (Sandbox Code Playgroud)

但这不会保存数据库中的数据.谷歌搜索后,我发现我可以像这样使用now().但似乎错了,使用它的正确方法是什么?

PS:我的MySQL字段是'DATE'类型.如果我像这样使用它是有效的:

$this->data['MyObject']['expire_date'] = date( 'Y-m-d', mktime(0, 0, 0, date("m"), date("d")+30,   date("Y")));
Run Code Online (Sandbox Code Playgroud)

小智 17

$this->data['MyObject']['expire_date'] = DboSource::expression('NOW()');
Run Code Online (Sandbox Code Playgroud)

  • 它应该像这样调用:`$ db = $ this-> MyObject-> getDataSource();``$ this-> data ['MyObject'] ['expire_date'] = $ db-> expression('NOW() "));` (4认同)

Sab*_*hry 9

对于cakephp 2.x用户:

$db = $this->MyObject->getDataSource(); 


$this->data['MyObject']['expire_date'] = $db->expression('NOW()');
Run Code Online (Sandbox Code Playgroud)


Joh*_*hnP 6

你可以缩短它

$this->data['MyObject']['expire_date'] = date('Y-m-d H:i:s'); 
Run Code Online (Sandbox Code Playgroud)

默认情况下,如果您没有传递第二个"timestamp"参数,则date()将占用当前时间.

DboSource::expression()当您想要在控制器中出于各种原因而不是在模型中设置它时,此方法更适合调用.

  • 此代码假定 PHP 和 MySQL 使用相同的时区。使用`DboSource::expression('NOW()')` 是一个更安全的选择。 (2认同)