提问者:小点点

在laravel销毁方法(laravel 5.3)中增加2种删除方式


我使用jquery来删除记录我有两种不同的jquery方法一种是删除控制器销毁方法中的一条记录,另一种是删除控制器销毁方法中的多条记录我只想在控制器中使用销毁方法,其中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');

我只想用一个方法销毁处理一个和多个删除记录我有主意但不知道如何使用它只是为了检查请求我来自哪个方法studentDelete还是deleteAll


共2个答案

匿名用户

在控制器中创建一个公共函数,以删除一条或多条记录,如,其输入参数为数组,如:

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
        }
    }
}

匿名用户

将您的第一个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';

}