在laravel Destroy Method(Laravel 5.3)中添加2个删除方式

时间:2016-11-14 05:52:03

标签: jquery laravel

我正在使用jquery来删除记录我有两种不同的jquery方法,一种是删除一条记录,它在Controller Destroy方法中,另一种是删除多条记录,它们在Controller destroyAll方法中 我想在Controller中只使用Destroy方法,其中删除单个和多个记录boyh可以处理,我使用资源控制器 在这里我的方法

单记录jquery方法

function studentDelete(id) {
    if(confirm('Are you sure to delete this User!')) {
        $("#row_"+id).attr("style", "display:none");
        $.ajax({
            url: '/student/'+id,
            type: "DELETE",
            success: function(result) {
                if(result == 'delete') {
                    $('#message').show();
                    $('#message-text').html('successfully deleted.');
                    $('#message').removeClass('displayhide').addClass('alert alert-success display-show');
                }
            }
        });
    }
}

用于多记录jquery方法

function deleteAll () {
        if(!$('input:checkbox:checked').length){
           alert("Nothing Selected");
           return false;
        }
        if(confirm('Are you sure!')) {
        var checkedValues = $('input:checkbox:checked').map(function() {
            return this.value;
        }).get();
        $.ajax({
        type    : "POST",
        url     : "{{ url('/school-management/student/destroyAll') }}",
        data    : {ids: checkedValues, _token: "{{ csrf_token() }}"},
        success: function(result) {
                        if(result == 'delete') {
                            window.location.href = "/dashboard";
                        }
                    }
    });

        }
    }

单一记录的控制器方法

public function destroy($id)
{
    $student = Student::findOrFail($id);
    $student->delete();
    return 'delete';
}

单一记录的控制器方法

    public function destroyAll(Request $request)
{
    $ids = $request->input('ids');
    $school = Student::whereIn('id', $ids);
    $school->delete();
    session()->flash('msg',trans('deleted successfully.'));
    return 'delete';

}

路线

Route::resource('/student', 'SchoolController');

我想只使用一个destroy方法来处理一个和多个删除记录 我有想法,但不知道如何使用它 只是为了检查来自studentDelete或者deleteAll

中的哪个方法的请求

2 个答案:

答案 0 :(得分:0)

在控制器中创建一个通用函数来删除一个或多个记录,其输入参数是一个数组:

public function delete(Request $request)
{
    // here $request is an array that contains one or more id's into it
    if(count($request->input()) > 0)
    {
        foreach(($request->input() as $id)
        {
            // code to delete records
        }
    }
}

答案 1 :(得分:0)

将您的第一个ajax更改为

 $.ajax({
        type    : "POST",
        url     : "{{ url('/student/destroy') }}",
        data    : {ids: id, _token: "{{ csrf_token() }}"},

和你的第二个

$.ajax({
        type    : "POST",
        url     : "{{ url('/student/destroy') }}",
        data    : {ids: checkedValues, _token: "{{ csrf_token() }}"},

和你的销毁功能

public function destroy(Request $request)
{
    $ids = $request->input('ids');
    if (gettype($ids) == 'array') {
    $school = Student::whereIn('id', $ids);
    } else {
    $school = Student::findOrFail($id);
    }
    $school->delete();
    session()->flash('msg',trans('deleted successfully.'));
    return 'delete';

}