2017-05-08 2 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]']); 

삭제 버튼을 클릭하면 오류가 나타나지 않지만 데이터베이스의 값은 그대로 유지됩니다. 내가 누락 된 것. 미리 감사드립니다.

+0

어떤 오류가 발생합니까? –

+0

나는 불행을 느끼지 않고 있습니다. 그냥 삭제하지 마십시오. – MrVampo

+0

아약스없이 시도해 봤어? –

답변

1

업데이트 (난 그냥 $ ID를 입력하지만, 당신이 거기에 제대로 ID를 전달할 수 있습니다) 당신의 route 요청 방법은 DELETE하고 @Rodrane는 제안도 user_id를 추가 할 수 있도록. 당신의 view에서

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

다음과 같이 할 수있는 삭제 링크를 업데이트합니다.

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

이제 변수가 정의되지 않음 view.php return ' Delete'; controller.php 공용 함수 destroy ($ id) { $ user = User :: find ($ id); $ user-> delete(); 보기 되돌리기 ('user.index', compact ('user')); } – MrVampo

+0

그리고 위의 오류가 컨트롤러에서 트리거 되었기 때문에'객체 '가'show' 메소드를 위해'UsersController'에 반환했는지 확인하십시오 –

+0

@LittlePhild 경로를 지정하지 않았으므로이 작업은 실패합니다. 'route()'도우미의 사용은 작동하지 않을 것이다. 경로 이름을 지정하거나 대신'url()'을 사용해야합니다. –

0

당신은 ID로 컨트롤러에 {ID} 그래서 $user = User::find($id); 반환에게 대신 사용자에게 전달되지 않고 방법을 게시하지 얻을 수 있어야합니다.

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

또한 변경해야합니다.

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

경로 이름을 정의한 이후로'url' 함수 대신'route' 함수를 사용하고자 할 수 있습니다. – 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 변수 인 경우. 도움을 많이 주셔서 감사합니다!