使用Laravel 5.6和Mysql。并需要使用以下数据删除表数据。
<td><a class="button is-outlined" href="/student/{{$student->id}}/delete">Delete</a></td>
和控制器删除功能是
public function delete($id)
{
DB::table('students')
->where('id', $id)
->delete();
return redirect()->back();
}
路线是这样的
Route::resource('student','StudentController');
但是当单击删除按钮时,它会根据错误消息生成,
(1/1) NotFoundHttpException
如何解决此问题?
答案 0 :(得分:3)
如果使用资源控制器,则无法为 DELETE 方法生成链接。
顺便说一下,它不是delete
方法,而是destroy
方法和链接。
DELETE 方法期望请求具有 DELETE 标头(例如POST,GET或PUT)。
最简单的方法是为您的delete
方法定义一个URL:
Route::get('student/{site}/delete', ['as' => 'student.delete', 'uses' => 'StudentController@delete']);
或者您必须使用这样的形式来调用 Delete 标头:
<form action="{{ route('student.destroy', $studentId) }}" method="POST">
@method('DELETE')
@csrf
<button>Delete</button>
</form>
您需要更改方法的名称:
public function destroy($id)
答案 1 :(得分:0)
如果您正在使用资源控制器,则可以尝试此操作。您也可以尝试使用AJAX Call进行删除。
<td><a class="button is-outlined" id="delete-record">Delete</a></td>
DELETE
动词将自动从您的destroy
调用Resource Controller
动作。
public function destroy($id)
{
$deleted = DB::table('students')
->where('id', $id)
->delete();
// return number of deleted records
return $deleted;
}
要执行DELETE,请使用这样的AJAX调用。
$('#delete-record').click(function(){
$.ajax({
url: '/student/'+{{$student->id}},
type: 'DELETE', // user.destroy
success: function(result) {
console.log("Success");
console.log("No. Of Deleted Records = "+result);
}
});
});
我希望该解决方案也能像已经提供的解决方案一样工作。