Laravel-datatables: Le filtre ne fonctionne pas

Créé le 4 févr. 2017  ·  3Commentaires  ·  Source: yajra/laravel-datatables

  public function getincome_ajax(Request $request)
        {
            $starts = $request->start;
            $ende = $request->end;
            $course = $request->course;

                $start = date('Y-d-m', strtotime($starts));
                $end = date('Y-d-m', strtotime($ende));


            if (($starts) && ($ende) && ($course))
             {
                             //here is problem when i want search with $starts and $end its not working
                $query = Subscription::whereDate('created_at','>=',$start)
                                                ->whereDate('created_at','<=',$end)
                                                ->where('course_id',$course)
                                                ->with('courses');
            }
             elseif(($starts) && ($ende))
             {
                                  //here is problem when i want search with $starts and $end its not working
                $query = Subscription::whereDate('created_at','>=',$start)
                                                ->whereDate('created_at','<=',$end)
                                                ->with('courses');

         }

             elseif($course)
             {
                                    //here if I search with only $course its working fine
                $query = Subscription::where('course_id',$course)->with('courses');

             }

            else
            {
                         $query = Subscription::with('courses');
            }

            $dataTable = Datatables::of($query)
      ->addColumn('total', function ($s) {
                 return $s->tution_fee + $s->development_fee + $s->late_fee + $s->other_fee ;
               })
                             ->editColumn('created_at', function ($user) {
                             return $user->created_at->format('d/m/Y');
                     });
       $columns = ['created_at', 'tution_fee', 'development_fee','late_fee', 'other_fee','total','courses.name'];
      $base = new DataTableBase($query, $dataTable, $columns);
      return $base->render(null);
        }

scénario

   <script src="/vendor/datatables/buttons.server-side.js"></script>
      <script src="/js/bootstrap-datepicker.min.js"></script>

       <script type="text/javascript">
          var oTable = $('#userstable').DataTable({
            processing: true,
            serverSide: true,
            dom: 'Bfrtip',
                 buttons: [
                     'copy', 'csv', 'excel', 'pdf', 'print'
                 ],
               processing: true,
               serverSide: true,
               ajax: {
                   url: '/acadmic/income/search_ajax',
                   data: function (d) {

                       d.course = $('select[name=course]').val();
                       d.start = $('input[name=start]').val();
                       d.end = $('input[name=end]').val();

                   }
               },
               columns: [
                            { data: 'id', name: 'id' },
                             { data: 'created_at', name: 'created_at' },
                             { data: 'tution_fee', name: 'tution_fee' },
                             {data: 'development_fee', name: 'development_fee'},
                             { data: 'late_fee', name: 'late_fee' },
                             { data: 'other_fee', name: 'other_fee' },
                             {data: 'total', name: 'total', orderable: false, searchable: false},
                             { data: 'courses.name', name: 'courses.name' },
               ]
           });

           $('#search-form').on('submit', function(e) {
               oTable.draw();
               e.preventDefault();
           });
       </script>

   <script type="text/javascript">

      $(document).ready(function(){
        $('#sandbox-container .input-daterange').datepicker({
    format: "dd/mm/yyyy",
    forceParse: false,
    autoclose: true
});
      })
  </script>
question

Tous les 3 commentaires

Vous ne devez pas utiliser start comme nom de champ dans votre requête car il est utilisé par dataTables lors de la pagination des résultats.

oui j'ai changé cela et cela fonctionne et aussi mon problème de format de date de déclaration si j'ai changé et cela fonctionne

@yajra Vous sauvez ma journée! Merci!

Cette page vous a été utile?
0 / 5 - 0 notes