Search code examples
phpjqueryajaxlaravel-5.3

500 Internal Server Error though using csrf token in Laravel


I am continuously getting the error POST http://localhost:8000/live_datatable_search 500 (Internal Server Error) where live_datatable_search is the route name. Though I am using {{ csrf_field() }}.

Here is my script part

var search = $('#search').val();
        var token = $('input[name=_token]').val();
        console.log(token);

        $.ajax({
                url:'/live_datatable_search',
                type: 'POST',
                data: {
                        search : search,
                        _token : token
                    },

                success:function(msg){
                    console.log(msg);

                    $("#report").html(msg);

                }
            });

Route

Route::post('live_datatable_search','HomeController@live_datatable_search');

Controller code

public function live_datatable_search(Request $request)
{
    if($request->search)
    {
        $search = Adminuser::select('adminuser.*', 'user_type.name as user_type')
            ->orderBy('adminuser.user_type_id')
            ->leftJoin('user_type', 'adminuser.user_type_id', '=', 'user_type.id')
            ->where('adminuser.full_name', 'like', '%'. $request->search.'%')
            ->orWhere('adminuser.username', 'like', '%'. $request->search.'%')
            ->orWhere('adminuser.email', 'like', '%'. $request->search.'%')
            ->get();

        if($search)
        {
            foreach ($search as $key => $value) {

                $trHTML += "<tr class='itemList' data-toggle='modal' data-target='#exampleModal'>";
                $trHTML += "<input type='hidden' id='id' value='" + $value->id +"'><input type='hidden' id='user_type_id' value='" + $value->user_type_id + "'>";
                $trHTML += "<td id='full_name'>" + $value->full_name + "</td>";
                $trHTML += "<td id='email'>" + $value->email + "</td>";
                $trHTML += "<td id='user_type'>" + $value->user_type + "</td>";
                $trHTML += "</tr>";

                echo $trHTML;

            }
        }
    }   
}

table


Solution

  • Make alias of your mode and make a block of condition orWhere. Change in your laravel query, like below

    $search = Adminuser::from("adminuser as au")
        ->leftJoin('user_type as ut', 'au.user_type_id', '=', 'ut.id')
        ->where(function($query) {
            $query->orwhere('au.full_name', 'like', '%'. $request->search.'%');
            $query->orWhere('au.username', 'like', '%'. $request->search.'%');
            $query->orWhere('au.email', 'like', '%'. $request->search.'%');
        })
        ->select('au.*', 'ut.name as user_type')
        ->orderBy('au.user_type_id')
        ->get();