Yajra Datatable search bar not working after two text type datatable showing empty
Jquery ->
$(function () {
var table = $('#projectcashflow_data').DataTable({
processing: true,
serverSide: true,
lengthMenu: [[10, 25, 50, 100, -1], [10, 25, 50, 100, "All"]],
dom: 'Blfrtip',
"buttons": [
{
"extend": 'excelHtml5',
"title": 'Expense_Manage',
"text": '<button class="btn"><i class="fa fa-file-excel-o" style="color: green;"></i> Excel</button>',
"titleAttr": 'Excel',
exportOptions: {
modifier : {
page : 'all',
},
rows: { order:'current', search: 'none' },
columns: [1, 2, 3, 4, 5],
}
},
],
ajax: "{{ route('projectcashflow.load-projects-cashflow') }}",
columns: [
{data: 'DT_RowIndex', name: 'DT_RowIndex'},
{data: 'edit.projects_name', name: 'projects_name'},
{
data: 'action', name: 'action',
orderable: true,
searchable: true
},
],
});
});
Server Side Code(Laravel) My DataTable query function is al follows.->
public function load_projects_cashflow(Request $request){
if($request->ajax()){
$data = ProjectCashflow::select('project_cashflows.*','projects.project_name')
->leftjoin('projects', 'projects.id', 'project_cashflows.project_id')
->get();
return Datatables::of($data)
->addIndexColumn()
->addColumn('action', function($row){
$dataedit = route('projectcashflow.edit-projectscashflow',$row->id);
$actionBtn = "<a class='' style='margin-right:15px' href='{$dataedit}'
><i class='bx bx-edit-alt me-1'></i></a>";
$viewButton = "<a style='margin-right:15px' class='projectcashflowdetails' data-id='{$row->id}' data-toggle='modal' data-target='#projectcashflowdetails' style='cursor: pointer;' ><i class='fa-solid fa-eye me-1'></i></a>";
$deletebutton = "<a class='projectcashflow_delete' id='projectcashflow_delete' style='cursor: pointer;' data-id='$row->id'><i class='bx bx-trash-alt me-1'></i></a>";
return $actionBtn.' '.$viewButton.' '.$deletebutton;
})
->editColumn('edit', function($row){
$projectname = "<a class='projectcashflowdetails' data-id='{$row->id}' data-toggle='modal' data-target='#projectcashflowdetails' style='cursor: pointer;' >$row->project_name</a>";
return [
'projects_name' => $projectname,
];
})
->escapeColumns('edit')
->rawColumns(['action','edit'])
->make();
}
}
I have used Left Join Query. Now the problem is that Yajra DataTable search bar is not working. Its neither giving any error nor the search result.
Need a solution every thing are fine in code but i don't know why is not working,
You can search using the filter()
method. For ex:
->filter(function ($query) {
if ($keyword = $this->request->input('search.value')) {
return $query->whereHas('projects', function ($subQuery) use ($keyword) {
return $subQuery->where('project_name', 'LIKE', '%' . $keyword . '%');
});
}
return $query;
})
Customize your filtering. See: https://yajrabox.com/docs/laravel-datatables/master/filter-column
Here is an example from my own project:
->filter(function ($query) {
if ($keyword = $this->request->input('search.value')) {
return $query
->whereHas('address', function ($subQuery) use ($keyword) {
return $subQuery
->where('name', 'LIKE', '%' . $keyword . '%')
->orWhere('email', 'LIKE', '%' . $keyword . '%')
->orWhere('phone', 'LIKE', '%' . $keyword . '%');
})
->orWhereHas('user', function ($subQuery) use ($keyword) {
return $subQuery
->where('name', 'LIKE', '%' . $keyword . '%')
->orWhere('email', 'LIKE', '%' . $keyword . '%')
->orWhere('phone', 'LIKE', '%' . $keyword . '%');
})
->orWhere('code', 'LIKE', '%' . $keyword . '%');
}
return $query;
});