如何循环和比较从单个视图Laravel传递的多个数据
我的GlobalController中有以下功能:如何循环和比较从单个视图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
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");
}