我正在使用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');
在那之后工作正常。
我希望这对其他人有帮助,因为很难找到...