Yajra Datatable search bar not working in laravel

1.2k views Asked by At

Yajra Datatable search bar not working after two text type datatable showing empty enter image description here

after search enter image description here

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,

1

There are 1 answers

0
cengsemihsahin On

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