【问题标题】:Laravel DataTables dropdown filter does not workLaravel DataTables 下拉过滤器不起作用
【发布时间】:2021-07-18 03:11:27
【问题描述】:

我正在尝试在 Yajra Laravel DataTables 中创建 DataTables 下拉过滤器,但出现错误:

这是我的控制器:

    public function index(Request $request)
    {
        $title="Data Pelamar Kerja";
        if (request()->ajax()){
            $query = Applicant::with('formation')->get();
       //      $query = Applicant::all('formation')->where('status','active')->get();
            return DataTables::of($query)
            ->addColumn('action', function($item){
            return 
              '
              <div class="btn-group">
              <a href="#!" data-toggle="tooltip"  data-id="'.$item->id.'" class="btn btn-sm btn-danger delete-data">Hapus</a>
              </div>
              ';
            })
            ->editColumn('status', function ($item){
                if ($item->status == 'quo'){
                     return '<span class="badge-text badge-text-small info"><ion-icon name="checkmark-circle"></ion-icon> '.$item->status.'</span>';
                }else{
                     return '<span class="badge-text badge-text-small success"><ion-icon name="close-circle"></ion-icon>'.$item->status.'</span>';
                }
            })
             ->editColumn('formations_id', function ($item){
                if ($item->formations_id == 0 || $item->formations_id == NULL){
                     return '<span class="text-danger">-</span>';
                }else{
                     return $item->formation->name;
                }
            })
             ->filter(function ($instance) use ($request) {
                        if ($request->get('status') == 'quo' || $request->get('status') == 'melamar') {
                            $instance->where('status', $request->get('status'));
                        }
                        if (!empty($request->get('search'))) {
                             $instance->where(function($w) use($request){
                                $search = $request->get('search');
                                $w->orWhere('name', 'LIKE', "%$search%")
                                ->orWhere('email', 'LIKE', "%$search%");
                            });
                        }
              })
       
            ->addIndexColumn()
            ->removeColumn('id')
            ->rawColumns(['action','status','formations_id'])
            ->make(true);
       }
        return view('pages.admin.applicant.index',['title'=>$title]);
    }

这是我的js函数:

 var datatable = $('#appTable').DataTable({
            processing:true,
            serverSide:true,
            ordering:true,
            ajax:{
                     url:'{!! url()->current() !!}',
                     data: function (d) {
                     d.status = $('#status').val(),
                     d.search = $('input[type="search"]').val()
              }
            },
            columns:[
                {data: 'DT_RowIndex', name:'DT_RowIndex'},
                {data:'name', name:'name'},
                {data:'gender', name:'gender'},
                {data:'email', name:'email'},
                {data:'status', name:'status'},
                {data:'formations_id', name:'formations_id'},
                {
                    data:'action',
                    name:'action',
                    orderable:false,
                    searcable:false,
                    width:'15%'
                },
            ],
            order:[
                [0,'asc']
            ]
       });
       $('#status').change(function(){
       datatable.draw();
       });

这是我的下拉表单:

 <div class="form-group">
                                   <label><strong>Status :</strong></label>
                                   <select id='status' class="form-control" style="width: 200px">
                                   <option value="">Filter Status</option>
                                   <option value="quo">Quo</option>
                                   <option value="melamar">Melamar</option>
                                   </select>
                            </div>

我对我的代码有什么问题感到困惑。网上各种教程都试过了,都不行。

【问题讨论】:

    标签: php jquery laravel datatable yajra-datatable


    【解决方案1】:

    Datatables需要在后续的方法链中使用builder实例。 尝试关注删除get()

    $query = Applicant::all('formation')->where('status','active')->latest();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 2022-01-24
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      相关资源
      最近更新 更多