Laravel在更新前与数据库一起检查提交的值



我一直在尝试检查用户从表单中提交的字段与数据库字段,以查看是否有任何更改如果让save((查询运行,则会发送一条消息,表明没有进行任何更改

public function update(Request $request,$id)
{
$this->validate($request, [
'title' =>'required',
'notes' =>'required',
'description' =>'required'
]);
$editinc = Editted::find($id);
if($editinc > 0) {
dd($editinc);
}
$data = $request->all();
$post= Joborder::find($id);
//before this query runs i want to check my fields with db            
//if no changes has been this should not be executes
$post->fill($request->input())->save();    

return redirect('/thehood')->with('success','WE DID IT.');
}

其他信息:我是拉拉维尔的新手,所以对我宽容一点。

如果isDirty((是可能的,怎么做?我查了很多问题仍然不知道如何使用它。

如果这是不可能的,那么有拉拉威尔的方法吗?检查的东西,如果有差异,它将ONLY更改其值NOT对每个字段执行完全更新。

编辑:这可能是一种方式,但我很确定有一种我不知道的拉拉威尔方式??!

$post= Joborder::find($id);
$data = $request->all();
foreach($data as $dat => $val) {
if($dat=="_token" || $dat=="_method") continue;
if($data[$dat] == $post->$dat) {
continue;
}else{
$post->$dat = $data[$dat];
$post->save();
$flag=1;
}
}           
if($flag == 0 )      {
return redirect('/thehood')->with('success','NO EDIT HAS BEEN DoNE.');
}else{
return redirect('/thehood')->with('success','one or more Field has been edited .');
}

以下是您可以做的,请在查询中输入您想要比较的所有字段,因为我没有输入所有字段。

$exist = Joborder::where('title', $request->input('title'))->where('notes', $request->input('notes'))->first();
if($exist)
{
//Insert into database.
}

最新更新