当我更新数据库中的数据时,有一种方法可以检查值是否保持不变或是否输入了新值。
$update_email = User::find(Auth::user()->id)->update($request->all());
即使数据相同或不相同,上述内容也会返回。
答案 0 :(得分:2)
首先使用fill而不是update:
$user = User::find(Auth::user()->id)->fill($request->all());
然后,您必须检查每个属性以查看是否已更改:
$emailChanged = $user->email !== $user->getOriginal('email')
然后在完成之前保存:
$user->save();
您可以使用for循环来迭代属性,而不是像我一样迭代硬编码电子邮件。无论哪种方式,答案的要点是,这不是内置于雄辩的,你必须自己或多或少地管理它。
在看到其他答案后编辑,实际上有一个方法getDirty()
将返回已更改的属性:https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_getDirty
答案 1 :(得分:2)
您可以在之前查看:
$user = User::find(Auth::user()->id);
$user->fill(request()->all();
if($user->isDirty()) {
// update happened
}
$user->save();