2015-06-23 6 views
8

Voglio mettere la differenza di tempo tra la mia colonna updated_at (nel database utilizzando timestamp) e ora. Voglio che sia umano-amichevole in questo modo: 53 minuti fa, 2 ore fa, 3 giorni fa, ecc.Come ottenere la differenza di tempo in umani leggibili con Laravel 5

Esiste qualche funzione che potrei usare per semplificare?

Per essere sicuri di capirmi, supponiamo di avere nel mio database una colonna aggiornata_at che è uguale a 2015-06-22 20:00:03. Sono le 20:00:28 quindi nella mia pagina web mi piacerebbe vedere: 25 minuti fa. Quando è superiore a 59 minuti, voglio mostrare solo le ore e quando è superiore a 24 ore mi piacerebbe vedere quanti giorni fa.

+0

Date un'occhiata a [questo] (https://gist.github.com/ozh/8169202) (trovato su google) –

+0

un'occhiata alla classe DateTime e il metodo diff [nel manuale] (http : //php.net/manual/en/class.datetime.php) – RiggsFolly

+0

Puoi usare [Carbon] (http://carbon.nesbot.com/), viene fornito con Laravel. –

risposta

29

Per impostazione predefinita, Eloquent converte le colonne created_at e updated_at in istanze di Carbon. Quindi, se stai recuperando i dati usando Eloquent, puoi farlo come di seguito.

$object->updated_at->diffForHumans(); 

Se si desidera personalizzare i campi che verranno mutati automaticamente, quindi entro il vostro modello, è possibile personalizzare a vostro piacimento.

// Carbon instance fields 
protected $dates = ['created_at', 'updated_at', 'deleted_at']; 
+1

Wow, questo è esattamente quello che stavo cercando. diffForHumans(); Thx Burak, mi ha aiutato un sacco –

+0

Laravel mi sorprende ogni volta. – Farhad

+1

Esattamente quello che volevo. Grazie – flangofas