2016-08-08 19 views
1

Also in Laravel, wenn ich einen Datensatz habe, der heute erstellt wurde, kann ich aktualisieren oder speichern, wie ich den Datensatz aktualisieren. Genial.Wie aktualisiere ich einen Datensatz erstellen am selben Tag oder einen neuen Datensatz erstellen, wenn es ein neuer Tag? (Laravel 5.2)

Aber was ist, wenn es morgen ist? Wie soll ich sagen, hey ist es noch gestern? Nein? Ok können wir einen neuen Datensatz erstellen. Zum Beispiel:

id: 1, 
post_id: 1 
viewed_times: 3 
create_at: today 

So kann ich es aktualisieren, da es heute ist. Aber nehmen wir jetzt morgen (nach 12:00) an.

Anstatt nun den Datensatz aktualisieren, da es morgen ist, möchte ich einen neuen Datensatz erstellen sagen:

id: 2, 
post_id: 1 
viewed_times: 2 
create_at: tomorrow 

So können Sie jetzt sehen wir einen neuen Datensatz mit der gleichen Post-ID haben und die Ansichten für den neuen Tag (morgen) ist auf 2 gesetzt.

Was ist der beste Weg zu sagen: Ist es heute oder ist es morgen? Wenn es heute ist, dann aktualisieren Sie den bestehenden Datensatz, wenn es morgen ist, dann erstellen Sie einen neuen Datensatz.

Hinweis: Wenn ich Kohlenstoff verwenden könnte, wäre es erstaunlich, es einfacher zu machen.

+0

Immer noch mit morgen verwechseln – jonju

+0

Verwendung updateOrCreate? –

Antwort

1

können Sie

$today = Carbon\Carbon::today();

verwenden dann die morgen Ihrer erstellt Datensatz wie folgt erhalten:

$record->create_at->tomorrow();

Dann

if($today->eq($record->create_at->tomorrow())){ 
    //it's tomorrow insert new record 
}else{ 
    //it's the same day just update the record :) 
} 
+0

Kannst du erklären, wie morgen auf der Platte von Laravel funktioniert? Wie, warum nicht einfach tun, wenn $ record-> tomorrow() wenn es bestimmt, ob es morgen ist? – TheWebs

+0

Auch morgen ist keine Methode, die Sie auf einem Datensatz aufrufen können. – TheWebs

+0

Ich habe meine Antwort aktualisiert, Sie können morgen von einer Instanz von 'Carbon' aufrufen und' create_at' ist eine 'Carbon'-Instanz, und warum ich' create_at-> tomorrow() 'mache, weil Sie das morgige Datum erhalten müssen der 'create_at' deines Datensatzes, beantwortet das deine Frage? – Maraboc

1

Sie würden überprüfen, ob das Datum, das Sie haben, größer ist als heute.

$date_to_compare = Carbon\Carbon::tomorrow(); 

if (Carbon\Carbon::now()->gt(Carbon::parse($date_to_compare)) { 
    // will always fail because date to compare is tomorrow 
}