如何搜索datatables中的所有数据?yajra



我尝试使用yajra数据表laravel我搜索有问题当我搜索数据表中已经存在的数据时,它不起作用我已经在文档中尝试了这个例子,但它对我不起作用

有人能帮帮我吗?教我如何像一样

示例数据示例搜索

**这是我的javascript数据表**

let oTable = $("#example1").DataTable({
responsive: true,
autoWidth: false,
processing: true,
serverSide: true,
ajax:
{
url: '{{ route("data.user.datatables") }}',
type: 'GET',
data: function (d) {
d.filter = $('select[name=filter]').val();
}
},
columns: [
{ data: 'id'},
{ data: function(data, type, row){
return 'Username : ' + data.username +
'<br> Email : ' + data.email +
'<br> Ponsel : ' + data.contact_number;
},
name: 'username'
},
{
data: function(data, type, row){
return 'Register Date : ' +  data.created_at +
'<br> Last Login : ' + data.last_login +
'<br> App By : '+ data.app_admin +' / '+ data.date_admin_app +
'<br> App By : '+ data.login +' || '+ data.status_member;
},
name: 'created_at'
},
{ data: function(data, type, row){
return 'Saldo : ' +  data.saldo +
'<br> Bank Name : ' + data.bank_name +
'<br> Account Name : '+ data.account_name +
'<br> Account Number : '+ data.account_number;
},
name:'saldo'
},
{ data: 'action', orderable: false, searchable: false}
],
order:[[0,'desc']],
});

这在我的Laravel CONTROLLER中

if($request->ajax()):
$request->validate([
'filter' => ['string','nullable','alpha'],
]);
if($request->filled('filter')):
$users = User::query()->where('status_member', $request->filter);
else:
$users = User::query();
endif;
$data =  Datatables::of($users);
$data->addIndexColumn();
$data->addColumn('action', function ($user) {
return '<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
<div class="btn-group" role="group">
<button id="btnGroupDrop1" type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action</button>
<div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
<a class="dropdown-item modal-edit-user" data-toggle="modal" data-target="#modalEditUser" href="javascript:void(0)" data-id="' . $user->id . '" data-username="' . $user->username . '" >Edit</a>
<a class="dropdown-item" href="#">Dropdown link</a>
</div>
</div>
</div>';
});
$data->rawColumns(['action']);
return $data->make();
endif;

您根本没有向用户查询转发任何内容。

代替

$users = User::query()->where('status_member', $request->filter);
...
$users = User::query();

试着做

$users = User::where('status_member', $request->filter)->get();
...
$users = User::all();

编辑:

更新您的代码:

{ data: 'action', orderable: false, searchable: false}

{ data: 'action', orderable: false, searchable: true}

您可以提取查询级别上的级别过滤器,使其工作方式如下:

  1. 在Dropdown Change 上再次绘制表格

    let oTable = $("#example1").DataTable({
    responsive: true,
    autoWidth: false,
    processing: true,
    serverSide: true,
    ajax:
    {
    url: '{{ route("data.user.datatables") }}',
    type: 'GET',
    data: function (d) {
    d.filter = $('select[name=filter]').val();
    }
    },
    columns: [
    { data: 'id'},
    { data: function(data, type, row){
    return 'Username : ' + data.username +
    '<br> Email : ' + data.email +
    '<br> Ponsel : ' + data.contact_number;
    },
    name: 'username'
    },
    {
    data: function(data, type, row){
    return 'Register Date : ' +  data.created_at +
    '<br> Last Login : ' + data.last_login +
    '<br> App By : '+ data.app_admin +' / '+ data.date_admin_app +
    '<br> App By : '+ data.login +' || '+ data.status_member;
    },
    name: 'created_at'
    },
    { data: function(data, type, row){
    return 'Saldo : ' +  data.saldo +
    '<br> Bank Name : ' + data.bank_name +
    '<br> Account Name : '+ data.account_name +
    '<br> Account Number : '+ data.account_number;
    },
    name:'saldo'
    },
    { data: 'action', orderable: false, searchable: false}
    ],
    order:[[0,'desc']],
    });
    //Add these lines here
    $('select[name=filter]').change(function(){
    oTable.draw();
    });
    
  2. 通过查询过滤结果

    if($request->ajax()):
    $request->validate([
    'filter' => ['string','nullable','alpha'],
    ]);
    $filter = $request->filter;
    $users = User::select('*')
    ->when($filter, function($query) use ($filter) { 
    return $query->where('status_member', '=', $filter);
    })
    ->get();
    
    $data =  Datatables::of($users);
    $data->addIndexColumn();
    $data->addColumn('action', function ($user) {
    return '<div class="btn-group" role="group" aria-label="Button group with nested dropdown">
    <div class="btn-group" role="group">
    <button id="btnGroupDrop1" type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Action</button>
    <div class="dropdown-menu" aria-labelledby="btnGroupDrop1">
    <a class="dropdown-item modal-edit-user" data-toggle="modal" data-target="#modalEditUser" href="javascript:void(0)" data-id="' . $user->id . '" data-username="' . $user->username . '" >Edit</a>
    <a class="dropdown-item" href="#">Dropdown link</a>
    </div>
    </div>
    </div>';
    });
    $data->rawColumns(['action']);
    return $data->make();
    endif;
    

最新更新