Eloquent Modell nicht aktualisieren, updated_at timestamp
Bin ich mit Laravel 5.1. Es einfach zu machen, habe ich den folgenden code
Migration:
Schema::create('sitemap_data', function (Blueprint $table) {
//Primary and foreign keys
$table->increments('id');
$table->string('postUrl');
//Database functions
$table->timestamps();
});
- Und dies ist der code irgendwo anders ich bin mit
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->save();
Nun, nach der Laravel Dokumentation
Wieder, die updated_at timestamp automatisch aktualisiert werden, so gibt es keine Notwendigkeit, manuell setzen Sie den Wert
Den updated_at-Wert aktualisiert werden soll in der Tabelle. Dies ist jedoch nicht passiert.
Es ist nur der erste insert -, aber nicht auf aktualisieren. Wenn ich es manuell mache, wie diese
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->updated_at = Carbon::now();
$sitemapData->save();
es funktioniert. Aber die docs sagen sollte dies passiert automatisch, also was ist hier falsch?
Ich gesucht habe einige Seiten auf stackoverflow für diese Frage, aber die, die ich gefunden, wo für Laravel 3 oder 4.1, 4.2 usw.
Wie würde ich das tun, richtig?
$sitemapData = SitemapData::firstOrNew([ 'postUrl' => $post ]); $sitemapData->save();
nicht ändern, dass die Daten in irgendeiner WeiseAh okay! Ich dachte, die updated_at aktualisiert wird, unabhängig von änderungen oder nicht. Du hast Recht, dass ich mich nicht ändern, ich wollte nur überprüfen, ob es funktioniert oder nicht. Danke. Jetzt macht das Sinn
Nein, dies ist, wo Laravel versucht, schlau zu sein, und vermeiden Sie die Kosten einer Datenbank-Aufruf, wenn es nicht notwendig ist
InformationsquelleAutor Musterknabe | 2015-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie bereits erwähnt in den Kommentaren, wenn das Modell nicht ändern den Zeitstempel nicht aktualisiert werden. Allerdings, wenn Sie brauchen, um Sie zu aktualisieren, oder wollen Sie, um zu überprüfen, ob alles ist in Ordnung, verwenden Sie
$model->touch()
- mehr hiercreated_at
. Ich stieß auf einen Fehler, wocreated_at
wurde auf 0 gesetzt, aberupdated_at
richtig war. Es kann möglich sein, dassupdated_at
wurde später aktualisiert werden. Aber ich bin nicht in der Lage, sich zu regenerieren dieses Problem. Es war nur eine zufällige Fall.InformationsquelleAutor Pawel Bieszczad
Ist es möglich tatsächlich:
Wird richtig speichern Sie die
updated_at
jetzt. Wenn Sie nicht sicher sind, ob jeder der sich das Modell der Spalten verändert haben, aber Sie wollen zu aktualisieren, dieupdated_at
unabhängig - das ist der Weg zu gehen.InformationsquelleAutor Stan Smulders
Yeah, was Musterknabe getan hat, ist richtig, aber er sollte auch prüfen sein Modell SitemapData.php sollte es haben, $Zeitstempel = true;
InformationsquelleAutor Said