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

时间:2011-05-03 04:03:09

标签: mysql cakephp date

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

$this->data['MyObject']['expire_date'] = 'NOW()';

和...

$this->MyObject->save($this->data);

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

PS:我的MySQL字段属于'DATE'类型。如果我这样使用它可以工作:

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

5 个答案:

答案 0 :(得分:17)

$this->data['MyObject']['expire_date'] = DboSource::expression('NOW()');

答案 1 :(得分:9)

对于cakephp 2.x用户:

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


$this->data['MyObject']['expire_date'] = $db->expression('NOW()');

答案 2 :(得分:6)

您可以将其缩短为

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

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

此方法比调用DboSource::expression()更可取,尤其是当您希望在控制器中因各种原因而不是模型中设置它时。

答案 3 :(得分:0)

对于CakePHP 3(如果有人在搜索),您需要使用SQL函数:

$query = $this->Example->query();
$query
    ->insert(['created','id'])
    ->values(array(
        'created' => $query->func()->now(),
        'id' => $id,
    ));
$result = $query->execute();

来源:

答案 4 :(得分:-3)

$this->data['MyObject']['expire_date'] = strtotime('now');