Php 雄辩的';s Model::save()方法?

Php 雄辩的';s Model::save()方法?,php,laravel-5,eloquent,Php,Laravel 5,Eloquent,Eloquent有一个名为save()的方法,它接受一个可选的参数数组(选项)。然而,报告似乎没有解释这些选项是什么 有没有我遗漏的地方的清单?当然,我可以通过源代码找到它们(至少我看到touch和timestamp),但我认为至少这个问题对其他人来说是有用的;博士 在$options数组中,您可以禁用该特定查询的时间戳: $item->保存([ 'timestamps'=>false,//在插入和更新时禁用时间戳。 'touch'=>false,//禁用父级时间戳。 ]); 请参见:和。 注

Eloquent有一个名为
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你是对的!在这个答案写完之后。