Laravel数据表过滤器无效

时间:2017-04-06 08:36:54

标签: php jquery datatables laravel-5.3

我在我的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);

我的问题:它在页面加载时加载数据。但是当我更改下拉值时,过滤器似乎对我不起作用。

1 个答案:

答案 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);
相关问题