how to use mysql now() function in cakephp for date fields?

17,548

Solution 1

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

Solution 2

For cakephp 2.x users:

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


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

Solution 3

You can shorten that to

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

By default, date() will take the present time, if you do not pass it a second 'timestamp' argument.

This method is preferable to calling DboSource::expression() especially when you want to set it in the controller for various reasons, instead of in the model.

Share:
17,548
pMan
Author by

pMan

duh! https://github.com/pMan

Updated on June 29, 2022

Comments

  • pMan
    pMan almost 2 years

    I have this code in my cakephp project:

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

    and...

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

    But this won't save data in database. After googling I found I can use now() like this. But it seems wrong, what is the correct way to use it?

    PS: My MySQL field is of type 'DATE'. It works if I use like this:

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