Laravel在更新之前使用数据库检查提交的值

时间:2018-08-04 10:26:37

标签: php laravel laravel-5.4

我一直在尝试检查用户从表单提交的字段以及数据库字段,以查看是否进行了任何更改 如果让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 .');

 }

1 个答案:

答案 0 :(得分:0)

这是您可以做的,请输入所有要比较的字段,因为我没有全部输入。

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