@cschoenmakers That's not the way. It's a server-side processing and I'm pretty sure I need to do that inside the controller. Here's my method for this specific datatable
public function datatableWebsites(Request $request) {
$draw = $request->get('draw');
$start = $request->get("start");
$rowperpage = $request->get("length");
$columnIndex_arr = $request->get('order');
$columnName_arr = $request->get('columns');
$order_arr = $request->get('order');
$search_arr = $request->get('search');
$columnIndex = $columnIndex_arr[0]['column'];
$columnName = $columnName_arr[$columnIndex]['data'];
$columnSortOrder = $order_arr[0]['dir'];
$searchValue = $search_arr['value'];
$totalRecords = DB::table('websites')->select('count(*) as allcount')->count();
$totalRecordswithFilter = DB::table('websites')->select('count(*) as allcount')->where('websites.*', 'like', '%' .$searchValue . '%')->count();
$sorts = ['id', 'claimed', 'web_category'];
$records = DB::table('websites')
->orderBy($sorts[$order_arr[0]['column']] ?? 'created_at', $order_arr[0]['dir'] ?? 'desc')
->leftJoin('categories', 'categories.id', '=', 'websites.web_category')
->where('websites.*', 'like', '%' .$searchValue . '%')
->selectRaw('websites.*, categories.name as category_name')
->groupBy('websites.id', 'categories.name')
->skip($start)
->take($rowperpage)
->get();
$data_arr = array();
$sno = $start+1;
foreach($records as $record){
$id = $record->id;
$img = '<a href="' . cdnplus_url($record->logo_path) . '?time=' . time() . '"><img src="' . cdnplus_url($record->logo_path) . '?time=' . time() . '" width="50" height="50" class="border" onerror="this.onerror=null; this.src=\'' . cdnplus_url('business_assets/img/no-image.webp') . '\'" /></a>';
$web_name = $record->web_name;
if($record->claimed == 1) {
$claimed = '<span data-sort="' . $record->claimed . '" class="badge badge-primary">CLAIMED</span>';
} else {
$claimed = '<span data-sort="' . $record->claimed . '" class="badge badge-secondary">NOT CLAIMED</span>';
}
$web_link = $record->web_link;
$created_at = \Carbon\Carbon::parse($record->created_at)->diffForHumans();
$category = $record->category_name . " (" . $record->web_category . ")";
$btn = '<td class="align-middle text-center">
<a href="' . url('administrator/inspect/website/' . $record->id) . '">
<button type="button" class="btn btn-secondary btn-flat"><i class="fa fa-search"></i></button>
</a>
</td>';
$data_arr[] = array(
$id,
$img,
$web_name,
$claimed,
$web_link,
$created_at,
$category,
$btn
);
}
return response()->json([
"draw" => intval($draw),
"recordsTotal" => $totalRecords,
"recordsFiltered" => $totalRecordswithFilter,
"data" => $data_arr
]);
}