Eloquent有一个名为save()
的方法,它接受一个可选的参数数组(选项)。但是,API reference似乎无法解释这些选项是什么。
我遗失的某个地方是否有名单?我当然可以通过源代码跟踪它们(我至少看到touch
和timestamp
),但我认为这个问题至少可以作为对其他人的引用。
答案 0 :(得分:6)
在$options
数组中,您可以禁用该特定查询的时间戳:
$item->save([
'timestamps' => false, // Disable timestamping on insert and update.
'touch' => false, // Disable parent timestamping.
]);
请参阅: Eloquent Model Conventions: Timestamps和Touching Parent Timestamps 注意:自5.3以来,不再支持
timestamps
选项。
如果你看一下你可以看到的source code,那么在save()
方法中,$options
变量会传递给三个函数:
timestamps
支持由performInsert()
和performUpdate()
提供。touch
支持由finishSave()
提供。timestamps
选项 performInsert()
和performUpdate()
都将使用模型的timestamps
属性检查conjuction中$options
数组中的$timestamps
键:
if ($this->timestamps && Arr::get($options, 'timestamps', true))
如果此表达式为true,则它将触及时间戳。
由于$option['timestamps']
默认为true并且与模型属性相结合,因此唯一使用此选项(当它产生影响时)是在模型中启用时间戳但您想要在特定查询上禁用它。你不能做相反的事情:在模型中禁用时间戳时启用时间戳 - 这可能是违反直觉的。
注意:由于5.3
performInsert()
和performUpdate()
函数无法使用$options
参数中的值。
touch
选项如果此选项设置为false,则会禁用模型$touches
属性中的touch of the parent relationships集。此选项默认为true,因此就像timestamps
选项一样,它仅用于禁用该特定查询的时间戳。