我正在使用Laravel 5.1。爲簡單起見,我有以下的代碼雄辯模型不更新updated_at時間戳
遷移:
Schema::create('sitemap_data', function (Blueprint $table) {
// Primary and foreign keys
$table->increments('id');
$table->string('postUrl');
// Database functions
$table->timestamps();
});
這是代碼別的地方我使用
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->save();
現在,根據Laravel文檔
同樣,updated_at時間戳會自動更新,因此不需要手動設置其值
updated_at值應該在表中更新。但是,這沒有發生。
它只在第一次插入時設置,而不在更新。當我這樣做手動,這樣
$sitemapData = SitemapData::firstOrNew([
'postUrl' => $post
]);
$sitemapData->updated_at = Carbon::now();
$sitemapData->save();
它的工作原理。然而,文檔說這應該自動發生,所以這裏有什麼問題?
我搜索過這個問題上的計算器一些網站,但那些我發現其中對於Laravel 3或4.1,4.2等
我怎麼會做對了嗎?
如果沒有更改記錄數據,那麼就不會被更新.....這只是不必要的開銷....和'$ sitemapData = SitemapData :: firstOrNew([ 「postUrl」 => $ post ]); $ sitemapData-> save();'不以任何方式改變記錄數據 –
啊好吧!我認爲updated_at不管更改與否都會更新。你是對的,我沒有改變,我只是想檢查它是否有效。謝謝。現在這是有道理的 – Musterknabe
不,這是Laravel試圖變得聰明的地方,如果沒有必要的話,避免數據庫調用的花費 –