你是否知道Eloquent保存方法中有没有一种简单的方式来检查行是否实际上已经更改了?类似于Eloquent的affected_rows
吗?
我找到的唯一解决方法是从Laravel Eloquent仅在更改后更新中执行以下操作:
$user = Auth::user();
$timestamp = $user->updated_at;
$user->title = $request->input('title');
....
$user->save();
if($timestamp == $user->updated_at){
// row was not updated.
}
但是有没有可能在不使用$timestep变量和检查的情况下更短地找到这个结果?我不想在每个控制器中重复这个逻辑。
我正在寻找像这样的东西:
$user = Auth::user();
$user->title = $request->input('title');
....
if($user->save()){
// row was updated.
}
但这并不起作用,因为在两种情况下
$user->save
都返回true
。还有其他方法吗?
$user->wasChanged()
之前,必须先调用$user->save()
。 - Adam$user->save()
,然后你可以运行$user->wasChanged()
来验证是否已更改。如果你想验证哪些内容已更改,你也可以使用getChanges()
方法。 - Marcin Nabiałek