我正在使用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试图变得聪明的地方,如果没有必要的话,避免数据库调用的花费 –