我正在递增表中的一些合计字段
$model->total_comments += 1;
$model->save();
然而,这会触发updated_at
的日期更新。我想在这些情况下禁用它。我知道我可以手动完成,并完全禁用时间戳字段的自动更新。但希望有一个简单的方法来完成。
编辑:
从我的代码添加示例。注意,在这个模型上没有设置观察者。
namespace App\Models;
class Language extends \Illuminate\Database\Eloquent\Model
{
}
$router->get('/test', function () {
$model = \App\Models\Language::find(1);
$model->words_total = $model->words_total + 1;
$model->save(['timestamps' => false]);
return 'boo';
});
5条答案
按热度按时间0vvn1miw1#
注意目前框架中有一个bug阻止了第一个解决方案的工作。如果它得到修复,我会保持这篇文章最新。Github issue
您可以将选项数组传递给
save()
,并禁用该次保存的时间戳:当然,您也可以在模型上设置属性,但是如果您有可能继续使用同一个模型示例,则需要将其重新设置为
true
:bwleehnv2#
您可以在保存前执行此操作,以暂时禁用时间戳。
yzuktlbb3#
暂时禁用
pgx2nnw84#
溶液-1:
溶液-2:
有关详细信息https://medium.com/@panjeh/laravel-eloquent-model-increment-with-or-without-updating-timestamps-1274c6cd7f52
dced5bon5#
您可以在不更改
created_at
或updated_at
时间戳的情况下更新记录,方法是保存这些列的当前值,例如updated_at
:您也可以检查此线程Update without touching timestamps (Laravel)。