在不接触时间戳的情况下进行更新(Laravel)
是否可以在不触及时间戳的情况下更新用户?
我不想完全禁用时间戳。
格茨
是否可以在不触及时间戳的情况下更新用户?
我不想完全禁用时间戳。
格茨
暂时禁用它:
$user = User::find(1);
$user->timestamps = false;
$user->age = 72;
$user->save();
您可以选择在保存后重新启用它们。
这是仅拉拉维尔 4 和 5 的功能,不适用于拉拉维尔 3。
在 Laravel 中,您可以将公共字段设置为如下所示:5.2
$timestamps
false
$user->timestamps = false;
$user->name = 'new name';
$user->save();
或者,您可以将选项作为函数的参数传递:save()
$user->name = 'new name';
$user->save(['timestamps' => false]);
为了更深入地了解它是如何工作的,你可以看看类,在方法中:\Illuminate\Database\Eloquent\Model
performUpdate(Builder $query, array $options = [])
protected function performUpdate(Builder $query, array $options = [])
// [...]
// First we need to create a fresh query instance and touch the creation and
// update timestamp on the model which are maintained by us for developer
// convenience. Then we will just continue saving the model instances.
if ($this->timestamps && Arr::get($options, 'timestamps', true)) {
$this->updateTimestamps();
}
// [...]
仅当 public 属性等于或返回时,才会更新时间戳字段(如果数组不包含键,则默认更新时间戳字段)。timestamps
true
Arr::get($options, 'timestamps', true)
true
$options
timestamps
一旦这两个中的一个返回,字段就不会更新。false
timestamps