检查数据库中是否更新了数据

时间:2017-12-04 22:51:11

标签: laravel

当我更新数据库中的数据时,有一种方法可以检查值是否保持不变或是否输入了新值。

  $update_email = User::find(Auth::user()->id)->update($request->all());

即使数据相同或不相同,上述内容也会返回。

2 个答案:

答案 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();