2017-05-08 119 views
1

我試圖從Laravel 5.4中的數據庫中刪除值。這裏是我的代碼:從Laravel 5.4數據庫中刪除值

UserController.php:

public function destroy($id) 
{ 

$user = User::find($id); 
$user->delete(); 
return redirect()->route('user.index'); 
} 

View.blade.php

<div class="table-responsive"> 
    <table id="datatable-account" 
      class="table table-vcenter table-hover table-condensed table-bordered text-center"> 
     <thead> 
     <tr> 
      <th class="text-center">Username</th> 
      <th class="text-center">Last Name</th> 
      <th class="text-center">First Name</th> 
      <th class="text-center">Role</th> 
      <th class="text-center">Email</th> 
      <th class="text-center">Action</th> 
     </tr> 
     </thead> 
    </table> 

</div> 

<script type="text/javascript"> 

$('#datatable-account').DataTable({ 
    processing: true, 
    serverSide: true, 
    "ajax": '{!! url('api/user') !!}', 
    "columns": [ 
     {data: 'username', name: 'username'}, 
     {data: 'lastname', name: 'lastname'}, 
     {data: 'firstname', name: 'firstname'}, 
     {data: 'role', name: 'role', 
      render: function (data, types, full, meta) { 
       if (data == 0){ return 'Admin' } else return 'User';} 
     }, 
     {data: 'email', name: 'email'}, 
     {data: 'id', name: "id", 
      render: function (data, types, full, meta) { 
       return '<a href="{{ url('delete')}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>'; 
      } 
     } 
    ] 
}); 

routes.php文件

Route::post('/delete', ['as' => 'delete', 'uses' => '[email protected]']); 

當我單擊Delete按鈕時,不會出現錯誤,但數據庫中的值仍然存在。我錯過了什麼。提前致謝。

+0

你得到了什麼錯誤? –

+0

我沒有得到錯誤不幸。它只是不做刪除。 – MrVampo

+0

你沒有嘗試過沒有ajax? –

回答

1

更新您的route使請求的方法是DELETE,也追加user_id爲@Rodrane建議。

Route::delete('/delete/{id}', '[email protected]'); 

在你的view然後更新刪除鏈接看起來像這樣。

return '<a href="{{ url('delete'.$id)}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>'; 
+0

現在它說undefined變量用戶 view.php 返回' Delete'; controller.php public function destroy($ id) {user = User :: find($ id); $ user-> delete(); return view('user.index',compact('user')); } – MrVampo

+0

@LittlePhild這樣做會失敗,因爲你還沒有命名路由,所以你必須知道''''你在'UsersController'中返回'show'方法,因爲上面的錯誤是在你的控制器中觸發的 –

+0

route()'helper的使用將不起作用。你應該命名你的路線,或者使用'url()'來代替。 –

0

你不及格(編號)到您的控制器,以便$user = User::find($id);回報,而不是用戶與id和方法應該得到不發佈。

Route::get('/delete/{id}', ['as' => 'delete', 'uses' => '[email protected]']); 

另外url也應該改變。 (我剛纔輸入的$ id,但你可以通過正確的ID在那裏)

return '<a href="{{ url('delete'.$id)}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>'; 
+1

自從您定義了一個路由名稱以來,您可能想使用'route'而不是'url'。 – milo526

-1

答案已被更新 我認爲你需要更新你的代碼,如:

Route.php

Route::get('/delete/{id}','[email protected]')->name('delete'); 

View.blade.php只需更新您刪除鏈接代碼如下給出:

return '<a href="{{ route('delete', [$id])}}" data-method="delete" button type="button" class="btn btn-danger btn-xs delete-user" name="delete"><i class="fa fa-times"></i> Delete</button></a>'; 
0

已解決。我創建了另一個控制器並使用代碼

<form action="{{route('UserController.destroy',$sub->id)}}" method="post"> 
         <input type="hidden" name="_method" value="delete"> 
         <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
         <input type="submit" class="btn btn-sm btn-danger" onclick="return confirm('Se sicuro di voler cancellare il subscriber?');" name="name" value="Elimina"> 
        </form> 

當$ sub變量是表「datatable-account」中的foreach var時。 非常感謝您的幫助!