我一直在尝试检查用户从表单提交的字段以及数据库字段,以查看是否进行了任何更改 如果让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.');
}
其他信息: 我是Laravel的新手,所以请放轻松。
如果isDirty()是可能的,怎么办?我检查了很多问题,仍然不知道如何使用它。
如果不可能,那有Laravel方法吗?可以检查并检查是否有差异的东西,将仅更改其值不,对每个字段进行完整更新。
已编辑: 这可能是一种方法,但是我很确定有一种我不知道的Laravel方法?!
$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 .');
}
答案 0 :(得分:0)
这是您可以做的,请输入所有要比较的字段,因为我没有全部输入。
$exist = Joborder::where('title', $request->input('title'))->where('notes', $request->input('notes'))->first();
if($exist)
{
//Insert into database.
}