代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

Laravel 5.6-仅当值发生更改时才保存它

  •  0
  • fightstarr20  · 技术社区  · 6 年前

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

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

    在我的后控制器里我有这个…

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

    我希望它只在表单中输入了新邮件时更新电子邮件,但因为我正在预填充表单字段,所以它总是传递if。

    有没有更大的方法来做这个?我看过isDirty(),但我不确定它是否正确。

    1 回复  |  直到 6 年前
        1
  •  4
  •   Faizan Fayaz    6 年前

    save()方法将检查模型中是否有更改。如果没有更改,它将不会运行数据库查询。所以不需要显式地为此编写代码。 如果你想使用isDirty方法,你可以写如下

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

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

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