Laravel 5.6-仅在更改后保存值

时间:2018-07-03 09:53:12

标签: php laravel laravel-5

我有一个Laravel 5.6项目,并且正在尝试从这样的表单中更新帖子

<input name="email" type="text" class="form-control" placeholder="Email" value="{{$user->email}}" required>

在我的PostsController中,我有这个...

    if($request->input('email')) {
        $user->email = $request->input('email');
    }

我希望它仅在表单中输入了新电子邮件时才更新电子邮件,但是因为我正在预先填充表单字段,所以它总是通过IF。

还有更多的Laravel方法吗?我已经看过isDirty()了,但是我不确定它是否正确。

1 个答案:

答案 0 :(得分:3)

save()方法将检查模型中的某些内容是否已更改。如果没有更改,它将不会运行数据库查询。因此,您无需为此显式编写代码。 仍然,如果您想使用isDirty方法,可以编写如下内容

if($test->isDirty()){
    // changes have been made
}

或者如果您要检查某个属性:

if($test->isDirty('email')){
   // email has changed
}