Laravel and jquery datatables



我正在使用yajra的dataTable和laravel datatable。

我有以下视图:

employeeTable = $('#employeeTable').DataTable({
  deferLoading: 0,
  serverSide: true,
  processing: true,
  ajax: {
    url: "{!! route('ajaxlistemployee') !!}",
    type: "POST",
    data: ajaxData,
    dataType: "JSON",
    dataSrc: function ( json ) {
        console.log(json);
        return json.data;
    }
  },
  columns: [
    { data: 'id', name: 'id'},
    { data: 'name', name: 'name'},
    { data: 'manager_id', name: 'manager_id'},
    { data: 'manager_name', name: 'manager_name'},
    { data: 'is_manager', name: 'is_manager'},
    { data: 'region', name: 'region'},
    { data: 'country', name: 'country'},
    { data: 'domain', name: 'domain'},
    { data: 'subdomain', name: 'subdomain'},
    { data: 'management_code', name: 'management_code'},
    { data: 'job_role', name: 'job_role'},
    { data: 'employee_type', name: 'employee_type'},
  ],
  columnDefs: [
    {
        "targets": [0, 2], "visible": false, "searchable": false
    }
  ]
});

我也有我的存储库:

public function getEmployeeList($where = null){
  $employee = DB::table('employee AS E')
    ->select(
      'E.id',
      'E.name',
      'E.manager_id',
      'M.name AS manager_name',
      'E.is_manager',
      'E.region',
      'E.country',
      'E.domain',
      'E.subdomain',
      'E.management_code',
      'E.job_role',
      'E.employee_type'
    )->join('employee AS M', 'E.manager_id', '=', 'M.id');
  if (!empty($where['manager']))
  {
    $employee->where(function ($query) use ($where) {
      foreach ($where['manager'] as $w)
      {
        $query->orWhere('E.manager_id',$w);
      }
    });
  }
  return $employee;
}

我有我的ajaxcontroller:

public function getAjaxListEmployee(Request $request){
  $input = $request->all();
  $return = $this->employeeRepository->getEmployeeList($input);
  $data = Datatables::of($return)->make(true);
  return $data;
}

这很简单,除了搜索和排序不起作用外,一切都在起作用。

我不明白为什么,我尝试了很多不同的配置。
但是没有人努力为我带来我的需求。

好的,经过大量的试验和错误,我想我知道为什么这不起作用。

似乎DataTable在Laravel中的功能正常工作,您不能像表的定义一样使用。

在代码中:

public function getEmployeeList($where = null){
  $employee = DB::table('employee AS E')
    ->select(
      'E.id',
      'E.name',
      'E.manager_id',
      'M.name AS manager_name',
      'E.is_manager',
      'E.region',
      'E.country',
      'E.domain',
      'E.subdomain',
      'E.management_code',
      'E.job_role',
      'E.employee_type'
    )->join('employee AS M', 'E.manager_id', '=', 'M.id');

通过将其更改为:

public function getEmployeeList($where = null){
  $employee = DB::table('employee')
    ->select(
      'employee.id',
      'employee.name',
      'employee.manager_id',
      'M.name AS manager_name',
      'employee.is_manager',
      'employee.region',
      'employee.country',
      'employee.domain',
      'employee.subdomain',
      'employee.management_code',
      'employee.job_role',
      'employee.employee_type'
    )->join('employee AS M', 'employee.manager_id', '=', 'M.id');

在那之后工作正常。

我希望这对其他人有帮助,因为很难找到...

最新更新