如何循环和比较从单个视图Laravel传递的多个数据

如何循环和比较从单个视图Laravel传递的多个数据,laravel,laravel-5.7,Laravel,Laravel 5.7,我的GlobalController中有以下功能: public function edit(Request $request, $id) { $isChanged = false; if (!$request) { $isChanged = true; } $user = User::find($id); $user->first_name = $request->first_name; $user->las

我的GlobalController中有以下功能:

public function edit(Request $request, $id)
{
    $isChanged = false;

    if (!$request) {
        $isChanged = true;
    }

    $user = User::find($id);
    $user->first_name = $request->first_name;
    $user->last_name = $request->last_name;
    $user->email = $request->email;
    $user->birth_date = $request->birth_date;

    $user->updated_at = \Carbon\Carbon::now();
    $user->save();

    if ($isChanged == true) {
        return redirect()->back()->with('updated', "Successfully updated $request->first_name");
    } else {
        return redirect()->back()->with('alert', "No changes $request->first_name");
    }
}
在我看来,关于这个功能,我有:

<div class="form-row">
     <div class="form-group col-md-6">
          <label for="first_name">First Name</label>
          <input name="first_name" type="text" class="form-control" id="" value="{{ $user->first_name }}" required>
     </div>
     <div class="form-group col-md-6">
          <label for="last_name">Last Name</label>
          <input name="last_name" type="text" class="form-control" id="" value="{{ $user->last_name }}" required>
     </div>
     <div class="form-group col-md-6">
          <label for="email">E-mail</label>
          <input name="email" type="email" class="form-control" id="" value="{{ $user->email }}" required>
     </div>
     <div class="form-group col-md-6">
          <label for="birth_date">Birth Date</label>
          <input name="birth_date" type="date" class="form-control" value="{{ $user->birth_date }}"  required>
     </div>
</div>

如果有人能为旧版本共享PHP等价的
isDirty()
,那将是一个很大的帮助。再次感谢。

Laravel有一个内置功能,可以检测数据是否发生了更改,以与以前的数据进行比较。如果您想知道模型是从数据库查询后编辑的,还是根本没有保存,则可以使用
->isDirty()
函数


您应该在执行
save()
操作之前调用
isDirty()
。例如:

public function edit(Request $request, $id)
{
    $user = User::find($id);

    $user->first_name = $request->first_name;
    $user->last_name = $request->last_name;
    $user->email = $request->email;
    $user->birth_date = $request->birth_date;
    $user->updated_at = now();

    $isChanged = $user->isDirty(); 

    $user->save();

    return $isChanged 
        ? back()->with('updated', "Successfully updated $request->first_name")
        : back()->with('alert', "No changes $request->first_name");
}

对于我的函数来说,这是正确的方法吗
if($user->isDirty()){return redirect()->back()->with('updated',“Successfully updated$request->first_name”)}
如果模型更改,则返回true,否则返回false。是的,你可以这样做。
if($user->isDirty()){return redirect()->back()->with('updated',“Successfully updated$request->first_name”);}否则{return redirect()->back()->with('alert',“没有对$request->first_name应用任何更改”)}
即使我对它进行了测试并更改了一些信息,它也会继续执行第二次返回。我做错了吗?在出现这种情况之前,您应该使用
$user->save()
public function edit(Request $request, $id)
{
    $user = User::find($id);

    $user->first_name = $request->first_name;
    $user->last_name = $request->last_name;
    $user->email = $request->email;
    $user->birth_date = $request->birth_date;
    $user->updated_at = now();

    $isChanged = $user->isDirty(); 

    $user->save();

    return $isChanged 
        ? back()->with('updated', "Successfully updated $request->first_name")
        : back()->with('alert', "No changes $request->first_name");
}