2017-05-31 47 views
0

我使用yajra的datatable和laravel数据表。Laravel和jquery数据表

我有我的看法如下:

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

这是很简单,除了搜索和排序不起作用之外,一切正在运行。

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

+0

开放的开发工具,看你做了什么错误。 – linuxartisan

+0

@Richard检查控制台中的错误并将其发布到此处 –

回答

0

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

看来Laravel中的datatables函数能够正常工作,您不能像使用表的定义那样使用它。

在代码:

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

它的工作之后的罚款。

我希望这将帮助其他人,因为它是很难找到......在浏览器