【问题标题】:Laravel and jquery datatablesLaravel 和 jquery 数据表
【发布时间】:2017-05-31 01:10:08
【问题描述】:

我正在使用来自 yajra 的数据表和 laravel 数据表。

我的观点如下:

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;
}

我有我的 Ajax 控制器:

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

这很简单,除了搜索和排序不工作外,一切正常。

我不明白为什么,我尝试了很多不同的配置。
但是没有人能帮我得到我需要的东西。

【问题讨论】:

  • 在浏览器中打开开发者工具,看看你遇到了什么错误。
  • @Richard 检查控制台中的错误并在此处发布

标签: jquery laravel datatables


【解决方案1】:

好的,经过多次尝试和错误,我想我明白为什么这不起作用了。

Laravel 中的 datatables 函数似乎可以正常工作,你不能用 as 来定义表。

在代码中:

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');

之后效果很好。

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

【讨论】:

    猜你喜欢
    • 2016-11-19
    • 2021-05-18
    • 2018-05-29
    • 2019-03-08
    • 1970-01-01
    • 2021-08-17
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多