DB :: table('users')-> where('id',$ id)-> update($ data);不更新数据

时间:2019-07-24 21:34:39

标签: laravel laravel-query-builder

我正在尝试更新数据库中的数据。如果我使用DB::table('users')->update($data),它将更新所有数据,但是DB::table('users')->where('id', $id)->update($data)不会更新单个行。如何更新单行?

public function edit(Request $req,$id) {
  $id = $req->input('id');
  $name = $req->input('name');
      $email = $req->input('email') ;
      $data=array('name'=>$name,'email'=>$email) ;

      //DB::table('users')->update($data);

      DB::table('users')->where('id',$id)->update($data);


      echo "data   recorded successfully.<br/>";
  }
    Route::get('/update','TestController@index_update')->name('display');
Route::get('edit/{id}','TestController@show')->name('updateD');
Route::post('/editt/{id}','TestController@edit')->name('updateEdit');;

<form  method="post" action = "{{route('updateEdit')}}" > 
          {!! csrf_field() !!}
        <table>
            <tr>
              <td>Name</td>
               <td>
    <input type = 'text' name = 'name' value = "{{ $books[0]->name }}"/>
               </td>
               <td>email</td>
               <td>
                  <input type = 'text' name = 'email' 
                     value = "{{ $books[0]->email }}"/>
               </td>
            </tr>
            <tr>
               <td colspan = '2'>
                  <input type = 'submit' value = "Update student" />
               </td>
               </tr>
         </table>
      </form>

3 个答案:

答案 0 :(得分:1)

您需要在表单中传递ID

尝试这个:

<form  method="post" action = "{{url('/editt/', $books[0]->id)}}" > 
          {!! csrf_field() !!}
        <table>
            <tr>
              <td>Name</td>
               <td>
    <input type = 'text' name = 'name' value = "{{ $books[0]->name }}"/>
               </td>
               <td>email</td>
               <td>
                  <input type = 'text' name = 'email' 
                     value = "{{ $books[0]->email }}"/>
               </td>
            </tr>
            <tr>
               <td colspan = '2'>
                  <input type = 'submit' value = "Update student" />
               </td>
               </tr>
         </table>
      </form>

即使您打电话给$req->input('id'),在您的表格中我也看不到任何类似的东西。

简单的技巧总是使用dd($req->all());来检查REQUEST是否为您传递了正确的值,并且您知道可以在哪里开始调试。还使用dd();检查您的ID是否通过,它将永远是您的朋友。

希望有帮助。

答案 1 :(得分:0)

在函数体内,您似乎正在覆盖名为$ id的url参数。因此,如果没有带有名称/关键字ID的请求正文,则在执行查询之前,您可能会有一个空ID。注释该行(函数中的第2行),然后重试。

答案 2 :(得分:0)

action = "{{route('updateEdit',['id'=>$books[0]->id])}}"