2010-09-29 12 views
15

Qual è il metodo per inviare un timestamp corrente direttamente su un INSERT o su un UPDATE? Se avessi un normale SQL, userei la funzione NOW() per il campo SQL specifico all'invio. Come lo farei con CakePHP?Invio della data/ora corrente in CakePHP

$this->Model->save($this->data) 

risposta

21

In CakePHP, è possibile includere la funzione NOW() escape utilizzando DboSource::expression

$this->data['SomeModel']['your_datetime_field'] = DboSource::expression('NOW()'); 
$this->Model->save($this->data); 

Questo è il preferito modo di includere le funzioni MySQL nei tuoi salvataggi.

http://api.cakephp.org/2.3/class-DboSource.html#_expression

+0

quindi dovrei manipolare i dati inviati prima di salvarlo. – macha

+1

Sì. Ma aggiunge solo un altro elemento all'array. Inoltre, se nella tua tabella hai campi chiamati 'created' e' updated', cakephp li aggiornerà automaticamente nelle istruzioni 'INSERT' e' UPDATE', rispettivamente. Tuttavia, preferisco aggiungere l'elemento manualmente. – webbiedave

+0

Whoop, crea il 'created' e' modified' – webbiedave

7

se si aggiungono le colonne creati e modificati in te tabella che verrà popolato automaticamente con la corrente di data e ora. Se il caso è diverso, cioè si desidera compilare un campo che in seguito si desidera modificare, probabilmente è meglio utilizzare la soluzione di edorian.

+0

Questo è il modo più semplice e dovrebbe essere la risposta preferita +1. Se l'OP chiede un campo modificabile, dovrebbe essere più specifica. – benjamin

0

questo potrebbe sembrare banale per utenti esperti, ma per principianti assoluti che potrebbe essere utile per fornire anche il codice d'uso:

App::uses('DboSource', 'Model/DataSource'); 

, che deve essere aggiunto alla testa di sorgente (sarebbe meglio come un commento, ma non posso commentare, ancora :))

Problemi correlati