Php 雄辩的';s Model::save()方法?
Eloquent有一个名为Php 雄辩的';s Model::save()方法?,php,laravel-5,eloquent,Php,Laravel 5,Eloquent,Eloquent有一个名为save()的方法,它接受一个可选的参数数组(选项)。然而,报告似乎没有解释这些选项是什么 有没有我遗漏的地方的清单?当然,我可以通过源代码找到它们(至少我看到touch和timestamp),但我认为至少这个问题对其他人来说是有用的;博士 在$options数组中,您可以禁用该特定查询的时间戳: $item->保存([ 'timestamps'=>false,//在插入和更新时禁用时间戳。 'touch'=>false,//禁用父级时间戳。 ]); 请参见:和。 注
save()
的方法,它接受一个可选的参数数组(选项)。然而,报告似乎没有解释这些选项是什么
有没有我遗漏的地方的清单?当然,我可以通过源代码找到它们(至少我看到touch
和timestamp
),但我认为至少这个问题对其他人来说是有用的;博士
在$options
数组中,您可以禁用该特定查询的时间戳:
$item->保存([
'timestamps'=>false,//在插入和更新时禁用时间戳。
'touch'=>false,//禁用父级时间戳。
]);
请参见:和。注意:自5.3版以来,
时间戳
选项不再受支持
全面审查
如果查看,可以看到在save()
方法中,$options
变量被传递给三个函数:
支持由时间戳
和performInsert()
performUpdate()提供
支持由touch
提供finishSave()
时间戳
选项
performInsert()
和performUpdate()
都将使用模型的$timestamps
属性检查$options
数组中的时间戳
if($this->timestamps&&Arr::get($options,'timestamps',true))
如果此表达式为true,它将触及时间戳
由于$option['timestamps']
默认为true,并且它与model属性结合使用,因此此选项的唯一用途(当它起作用时)是在模型中启用时间戳,但您希望在特定查询中禁用它。您不能做相反的事情:在模型中禁用时间戳时启用时间戳-这可能违反直觉
注意:因为performInsert()
和performUpdate()
函数不能与$options
参数中的值一起工作
触摸
选项
如果此选项设置为false,它将禁用模型的$touchs
属性中的设置。此选项默认为true,因此与timestamps
选项一样,它仅用于禁用该特定查询的时间戳。我在这里可能有点不知所措,但您为5.3链接的代码没有提到performUpdate()
上的timestamps
选项。似乎剩下的唯一选项是touch
,由finishSave()
使用。这对我来说是正确的。@igorsantos07你是对的!在这个答案写完之后。