2015-04-16 10 views
26

Ho due timestamp, edited_at che ho creato e created_at (di laravel) ... In banca dati, entrambi hanno tipo timestamp e il valore di default 0000-00-00 00:00:00 ... MaCome confrontare due timestamp in carbonio?

var_dump(edited_at variable) è dando una stringa. Mentre var_dump(created_at variable) è oggetto/Carbon. Cosa c'è di sbagliato in questi timestamp?

Devo confrontare entrambi dopo la conversione in numero intero utilizzando il formato ('U'). Posso solo chiamare questo metodo su Carbon Object. Come lo posso fare?

+0

Che cosa esattamente si desidera confrontare? vuoi sapere quale è più vecchio/più recente? – lukasgeiter

+0

sì, voglio campare vecchi/nuovi –

+0

http://carbon.nesbot.com/docs/#api-comparison – ceejayoz

risposta

75

In primo luogo, Eloquent converte automaticamente i timestamp (created_at, updated_at) in oggetti di carbone. Si potrebbe utilizzare updated_at per ottenere che bella caratteristica, o specificare edited_at nel modello nella proprietà $dates:

protected $dates = ['edited_at']; 

Ora torniamo alla tua domanda effettiva. Carbon ha un sacco di funzioni di confronto:

  • eq() uguale
  • ne() non è uguale a
  • gt() maggiore di
  • gte() maggiore o uguale
  • lt() meno di
  • lte() inferiore o uguale

Usage:

if($model->edited_at->gt($model->created_at)){ 
    // edited at is newer than created at 
} 
+0

Come posso confrontare solo le date e non l'ora? – geckob

+2

@geckob Il più semplice è probabilmente quello di fare '$ date1-> toDateString() == $ date2-> toDateString()' – lukasgeiter

+0

Sto testando ed è possibile utilizzare gli operatori di confronto per confrontare gli oggetti Carbon. È una nuova funzionalità? – JCarlos

1

In primo luogo, convertire il timestamp utilizzando la funzionalità di eloquenti built-in, come descritto in this answer.

Quindi è possibile utilizzare la funzione Carbon's min() o max() per il confronto. Ad esempio:

$dt1 = Carbon::create(2012, 1, 1, 0, 0, 0); $dt2 = Carbon::create(2014, 1, 30, 0, 0, 0); echo $dt1->min($dt2);

Ciò echo la minore delle due date, che in questo caso è $dt1.

Vedere http://carbon.nesbot.com/docs/