Eloquent有一个叫做save()
的方法,它接受一个可选的参数数组(选项)。然而,API参考似乎没有解释这些选项是什么。
是否有一个我错过的列表?当然,我可以通过源代码追踪它们(至少我看到了touch
和timestamp
),但我认为这个问题至少可以作为其他人的参考。
br
在$options
数组中,您可以禁用特定查询的时间戳:
$item->save([
'timestamps' => false, // Disable timestamping on insert and update.
'touch' => false, // Disable parent timestamping.
]);
<标题>参见: Eloquent模型约定:时间戳和触摸父时间戳。
注意:从5.3开始不再支持timestamps
选项。
如果您查看源代码,您可以看到,在save()
方法中,$options
变量传递给三个函数:
-
timestamps
支持由performInsert()
和performUpdate()
提供。 -
touch
支持由finishSave()
提供。
timestamps
选项
performInsert()
和performUpdate()
将结合模型的$timestamps
属性检查$options
数组中的timestamps
键:
if ($this->timestamps && Arr::get($options, 'timestamps', true))
如果这个表达式为真,它将触及时间戳。
由于$option['timestamps']
默认为true,并且它与model属性结合在一起,因此该选项的唯一用途(当它起作用时)是在模型中启用了时间戳,但您希望在特定查询上禁用它。您不能做相反的事情:在模型中禁用时间戳时启用它-这可能违反直觉。
注意:由于5.3中的
performInsert()
和performUpdate()
函数不能与$options
参数中的值一起工作。
touch
选项
如果这个选项被设置为false,它将禁用在模型的$touches
属性中设置的父关系的触摸。这个选项默认为true,所以就像timestamps
选项一样,它只用于禁用特定查询的时间戳。