2015-04-16 17 views
26

Ich habe zwei Zeitstempel, beide edited_at, die ich erstellt und created_at (Laravel ist) ... In Datenbank, Typ-Zeitstempel und den Standardwert 0000-00-00 00.00.00 haben ... AberWie zwei Carbon Timestamps zu vergleichen?

var_dump(edited_at variable) ist Schnur geben. Während var_dump(created_at variable) ist Objekt/Carbon. Was ist falsch an diesen Zeitstempeln?

Ich muss beide nach dem Konvertieren in Ganzzahl mit Format ('U') vergleichen. Ich kann diese Methode nur auf Carbon Object aufrufen. Wie kann ich das machen?

+0

Was genau möchten Sie vergleichen? Möchtest du wissen, welches älter/neuer ist? – lukasgeiter

+0

ja, ich möchte älter/neuer zusammenarbeiten –

+0

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

Antwort

75

Zuerst konvertiert Eloquent automatisch seine Zeitstempel (created_at, updated_at) in Kohlenstoffobjekte. Sie könnten nur updated_at verwenden Sie diese nette Eigenschaft zu erhalten, oder geben Sie edited_at in Ihrem Modell in der $dates Eigenschaft:

protected $dates = ['edited_at']; 

Nun zu Ihrer eigentlichen Frage zurück. Kohlenstoff hat eine Reihe von Vergleichsfunktionen:

  • eq() gleich
  • ne() nicht gleich
  • gt() größer als
  • gte() größer oder gleich
  • lt() weniger als
  • lte() kleine oder equals

Verbrauch:

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

Wie kann ich nur die Daten vergleichen und nicht die Zeit? – geckob

+2

@geckob Das einfachste ist wahrscheinlich $ date1-> toDateString() == $ date2-> toDateString() ' – lukasgeiter

+0

Ich teste gerade und es ist möglich, die Vergleichsoperatoren zu verwenden, um Carbon-Objekte zu vergleichen. Ist es ein neues Feature? – JCarlos

1

Zuerst wandelt die Zeitstempel die eingebauten in beredte-Funktionalität, wie in this answer beschrieben.

Dann können Sie einfach Carbon min() oder max() Funktion zum Vergleich verwenden. Zum Beispiel:

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

Dies wird die kleinere der beiden Daten echo, die in diesem Fall $dt1 ist.

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