簡體   English   中英

更新和刪除-我無法在Laravel框架中從數據庫更新和刪除數據

[英]Update and delete — I can't update and delete data from database in Laravel framework

我正在使用表單提交請求以更新和刪除數據庫中的數據,但無法這樣做。

我嘗試使用其他方法,但無法解決此問題。 我正在為此項目使用Laravel 5.4.36。

控制器:

public function update(Request $request, $id)
{
    Student::where('id', $id)->update(['first_name' => 'vks', 'last_name' => 'pok']);
}

public function destroy(Request $id)
{
    $student=Student::find($id);
    $student->delete();
}

路線:

Route::get('/student/about', 'BksController@about');
Route::get('/student/service', 'BksController@Services');
Route::get('create','BksController@create');
Route::post('create','StudentController@create');
Route::get('search','BksController@search');
Route::post('search','StudentController@show');
Route::get('/update','BksController@update');
Route::put('update','StudentController@update');
Route::get('/delete','BksController@delete');
Route::delete('/delete','StudentController@destroy');
Route::resource('student', 'StudentController');
Route::get('/home', 'HomeController@index')->name('home');

銷毀形式的刀片模板:

@include('student.commonlayout')

<div class='col-md-6 col-md-offset-3'>
  <h1>DeleteData</h1>
  <hr>
  <form method="post" action="{{url('delete')}}">
    {{csrf_field()}}
    <div class="form-group">
      <input type="text" name="first_name" class="form-control" placeholder="Enter your Id" />
    </div>
    <div class="form-group">
      <input type="submit" class="btn btn-primary"/>
    </div>
  </form>
</div>

更新表單的刀片模板:

@include('student.commonlayout')

<div class='col-md-6 col-md-offset-3'>
  <h1>update Data</h1>
  <hr>
  <form method="post" action="{{url('update')}}">
    {{csrf_field()}}
    <div class="form-group">
      <input type="text" name="id" class="form-control" placeholder="Enter your id" />
    </div>
    <div class="form-group">
      <input type="text" name="first_name" class="form-control" placeholder="Enter your Name" />
    </div>
    <div class="form-group">
      <input type="text" name="last_name" class="form-control" placeholder="Enter last Name" />
    </div>
    <div class="form-group">
      <input type="submit" class="btn btn-primary"  />
    </div>
  </form>
</div>

更新時,出現以下錯誤:

RouteCollection.php第251行中的MethodNotAllowedHttpException

刪除時,我收到類似的錯誤:

RouteCollection.php第251行中的MethodNotAllowedHttpException

在您的任何刪除或更新路由中都沒有看到POST方法。

  Route::get('/update','BksController@update');
  Route::put('update','StudentController@update');
  Route::get('/delete','BksController@delete');
  Route::delete('/delete','StudentController@destroy');

當您單擊表單中的按鈕時,它將執行HTTP發布。 因此,將您的路線更改為Route:post(...)以進行相應匹配。

使用Route::resource(...)將使用HTTP請求方法DELETE進行destroy操作,並使用PUT進行update操作來創建路由。 這意味着提交表單時必須使用這些方法。

不幸的是,HTML表單不支持PUTDELETE 這就是Laravel使用稱為_method的特殊隱藏輸入的原因,該輸入應包含正確的方法。 表單本身應該通過POST發送。 這是您的更新表單的外觀(省略字段和其他標記):

<form method="post" action="{{ url('update') }}">
  @method('put')
  {{ csrf_field() }}

  <!-- Your fields here -->
</form>

指令@method('put')將生成以下html <input type="hidden" name="_method" value="put">

您可以在官方文檔中閱讀有關此主題的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM