我在我的laravel应用程序中使用yajra数据表。我的要求如下所述,
我有一个用户列表以及他们所在的团队。它将加载一个列名为/ email / phone / team / user_status的列表。我有一个下拉列表,其中包含user_status列表作为其值。当我更改此下拉值时,它会自动过滤列表。
这是我的代码: 我认为HTML,
{!! Form::select('user_status', $status, null, ['class' => 'form-control']) !!}
<table id="user-info" class="table table-bordered table-hover" style="padding-top:10px;">
<thead>
<tr>
<th>Name</th>
<th>Email</th>
<th>Phone</th>
<th>Team</th>
<th>Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
JS for datatables,
$(document).ready(function(){
var oTable = $('#user-info').dataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": MY-URL-HERE,
"type": "GET",
"error": function(reason) {
console.log(reason);
}
},
"paging": true,
"lengthChange": true,
"searching": false,
"bInfo": true,
"bFilter": true,
"autoWidth": false,
"dom": '<"top"f>rt<"bottom table-bottom"lpi>',
"iDisplayLength":15,
"lengthMenu": [[15, 30, 50, 75, 100, -1], [15, 30, 50, 75, 100, "All"]],
"bSort": true,
"ordering": true
});
$('#user_status').change( function() {
oTable.fnFilter( $(this).val(),4);
});
});
将数据返回到数据表的方法,
$usersList = AppUser::join('teams as t', 't.id', '=', 'users.team_id')
->where('users.pm_status', '!=', 'active')
->select(DB::raw("CONCAT(users.user_fname,' ',users.user_lname) AS fullname"), 'users.email', 'users.phone', 't.team_name', 'users.user_status')->get();
return Datatables::of($usersList);
我的问题:它在页面加载时加载数据。但是当我更改下拉值时,过滤器似乎对我不起作用。
答案 0 :(得分:0)
我自己找到了答案。实际上这是一个问题 使用数据表时,查询中不需要get() 因此,我的控制器中的查询应如下所示,
$usersList = AppUser::join('teams as t', 't.id', '=', 'users.team_id')
->where('users.pm_status', '!=', 'active')
->select(DB::raw("CONCAT(users.user_fname,' ',users.user_lname) AS fullname"), 'users.email', 'users.phone', 't.team_name', 'users.user_status');
return Datatables::of($usersList);