Używam Laravel 5.1. Żeby było proste, mam następujący kodWymowny model nie aktualizujący sygnatury czasowej updated_at
Migracja:
Schema::create('sitemap_data', function (Blueprint $table) {
// Primary and foreign keys
$table->increments('id');
$table->string('postUrl');
// Database functions
$table->timestamps();
});
I to jest kod gdzieś indziej Używam
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->save();
Teraz, zgodnie z dokumentacją laravel
Ponownie, znacznik updated_at zostanie automatycznie zaktualizowany, więc nie ma potrzeby ręcznego ustawiania jego wartości
Zaktualizowaną wartość należy zaktualizować w tabeli. Tak się jednak nie dzieje.
Jest ustawiany tylko na pierwszym insercie, ale nie na aktualizacji. Gdy robię to ręcznie, to działa to. Jednak doktorzy twierdzą, że powinno to nastąpić automatycznie, więc co jest nie tak?
Przeszukałem kilka stron na StackOverflow na to pytanie, ale te, które znalazłem, gdzie za laravel 3 lub 4.1, 4.2 itd.
Jak miałbym to zrobić poprawnie?
jeśli nie ma zmian do zapisu danych, to nie będzie aktualizowana ..... to tylko niepotrzebny narzut .... i '$ sitemapData = SitemapData :: firstOrNew ([ 'postUrl' => $ post ]); $ sitemapData-> save(); 'nie zmienia danych rekordów w żaden sposób –
Ah w porządku! Myślałem, że updated_at jest aktualizowany niezależnie od zmian. Masz rację, że nie wprowadziłem zmian, chciałem tylko sprawdzić, czy to działa, czy nie. Dzięki. Teraz to ma sens – Musterknabe
Nie, to tutaj Laravel próbuje być sprytny i unika kosztu wywołania bazy danych, jeśli nie jest to konieczne, –