Laravel yajra datatable: no se puede recuperar el parámetro de búsqueda de la llamada ajax en el controlador

Estoy tratando de construir una tabla de datos con filtrado personalizado con la ayuda de yajra datatable deaqu :

HTML tabla a la vista:

  <form id="search-form" class="form-inline" method="POST" role="form" action="#">


      <select id="batch" name="batch">
        <option value="">Select</option>
        <option value="22">Skill Level CBE Dec 2018</option>
        <option value="2">Batch 2</option>

      </select>

      <button class="btn  btn-primary" type="submit">Search</button>

  </form>

     <table class="table table-striped table-bordered datatable" cellspacing="0" width="100%">

                                    <thead>

                                        <tr>



                                            <th>{{ getPhrase('S/N')}}</th>

                                            <th>{{ getPhrase('Batch')}}</th>
                                            <th>{{ getPhrase('Course')}}</th>
                                            <th>{{ getPhrase('Subject')}}</th>

                                            <th>{{ getPhrase('title')}}</th>

                                            <th>{{ getPhrase('otq_marks')}}</th>
                                            <th>{{ getPhrase('cr_marks')}}</th>

                                            <th>{{ getPhrase('total')}}</th>
                                            <th>{{ getPhrase('average')}}</th>




                                        </tr>

                                    </thead>



         </table>


        @section('footer_scripts')



         @include('common.datatables', array('route'=>URL_STUDENT_EXAM_GETATTEMPTS.$user->slug, 'route_as_url' => 'TRUE'))


        @stop

En cuanto acommon.datatables, datatables.blade.php tiene

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });

     tableObj = $('.datatable').DataTable({
            processing: true,
            serverSide: true,
                retrieve :true,
            // cache: true,
            type: 'GET',

            ajax: {
             url: '{{ $routeValue }}',
             data: function (d) {
                 d.batch = $('#batch').val();

             }
         }



     });


    $('#search-form').on('submit', function(e) {
        tableObj.draw();
        e.preventDefault();
    });

ajax url value $ routeValue se refiere aURL_STUDENT_EXAM_GETATTEMPTS constante (se aclarará más adelante) utilizado a la vista de cualquier manera.

Cuando selecciono un valor de"batch" desplegable y presione elsubmit, se realiza una llamada ajax a la ruta. En la herramienta de inspección del navegador, veo que se agregan muchos parámetros de consulta en la URL de ajax y nuestrabatch param también está ahí. Ahora necesito recuperar esebatch parámetro dentro del controlador.

Ahora sobre el código del lado del servidor:

El constanteURL_STUDENT_EXAM_GETATTEMPTS utilizado en blade tiene el valorPREFIX.'exams/student/get-exam-attempts/'

Y enroute.php, la ruta se define como:

Route::get('exams/student/get-exam-attempts/{user_slug}/{exam_slug?}', 'StudentQuizController@getExamAttemptsData');

En el controlador tengo:

public function getExamAttemptsData(Request $request,$slug, $exam_slug = '')
    {

    //body goes here 

    }

He utilizado todos los siguientes métodos para obtener elbatch parámetro en el controlador pero en vano:

$request->get('batch')
$request->query('batch')
Input::get('batch')

¿Cómo puedo recuperar el valor debatch dentro del controlador?

EDITAR Por cierto estoy usandouse Illuminate\Http\Request; Para elRequest $request variable en el parámetro de función del controlador

EDIT2: La herramienta de inspección del navegador muestra la url de solicitud de ajax como:

http: // localhost / lcbs / exams / student / get-exam-intentos / myuser123? draw = 2 & columnas% 5B0% 5D% 5Bdata% 5D = 0 ...... search% 5Bregex% 5D = false & lote = 22 & _ = 1541684388689.

Entonces ves quebatch está ahí en los parámetros de consulta. Pero dentro del controlador, el código$request->getQueryString() solo muestra%2Fexams%2Fstudent%2Fget-exam-attempts%2Fmyuser123

Y\URL::current() muestra http: // localhost / lcbs / exams / student / get-exam-intentos / myuser123

Eso significa, el$request pierde la cadena de consulta completa.

EDIT3: @ Adrián Hernández-López, estoy pegando el contenido COMPLETO de Kernel.php aquí:

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,

    ];

    /**
     * The application's route middleware groups.
     *
     * @var array
     */
    protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
        ],

        'api' => [
            'throttle:60,1',
        ],
    ];

    /**
     * The application's route middleware.
     *
     * These middleware may be assigned to groups or used individually.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'can' => \Illuminate\Foundation\Http\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,

        'role' => \Zizaco\Entrust\Middleware\EntrustRole::class,
        'permission' => \Zizaco\Entrust\Middleware\EntrustPermission::class,
        'ability' => \Zizaco\Entrust\Middleware\EntrustAbility::class,
       // 'adminOrGuest' => \App\Http\Middleware\AdminOrGuestMiddleware::class,

    ];
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta