【问题标题】:Add 2 Delete ways in laravel Destroy Method (Laravel 5.3)在 laravel Destroy Method (Laravel 5.3) 中添加 2 种删除方式
【发布时间】:2017-03-27 17:27:17
【问题描述】:

我正在使用 jquery 删除记录我有 2 种不同的 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');
                }
            }
        });
    }
}

多记录查询方法

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 的哪个方法的请求

【问题讨论】:

    标签: jquery laravel


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-07
        • 2017-06-12
        • 2017-06-07
        • 2017-02-27
        • 2017-08-07
        • 2017-02-19
        • 1970-01-01
        • 2017-02-22
        相关资源
        最近更新 更多