Come confrontare due timestamp in carbonio?

Ho due timestamp, edited_at che ho creato e created_at (Laravel’s) … Nel database, entrambi hanno tipo timestamp e valore predefinito 0000-00-00 00:00:00 … Ma

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

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

Innanzitutto, Eloquent converte automaticamente i timestamp ( updated_at , updated_at ) in oggetti di carbonio. Potresti semplicemente usare updated_at per ottenere quella bella funzionalità, o specificare edited_at nel tuo modello nella proprietà $dates :

 protected $dates = ['edited_at']; 

Ora torna alla tua vera domanda. Il carbonio ha un sacco di funzioni di confronto:

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

Uso:

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

Innanzitutto, converti il ​​timestamp usando la funzionalità eloquente incorporata, come descritto in questa risposta .

Quindi puoi semplicemente usare la funzione min() o max() Carbon per il confronto. Per esempio:

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

Questo farà echo al minore delle due date, che in questo caso è $dt1 .

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