Advertisement
eyuprog

Simple Laravel Datatables ajax Draw

Nov 28th, 2019
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.87 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Libraries;
  4.  
  5. class Datatables
  6. {
  7.     public static $request;
  8.     public static $query;
  9.     public static $records_total;
  10.     public static $records_filtered;
  11.  
  12.     static function make($request, $model)
  13.     {
  14.         self::$request = $request;
  15.         self::$query = $model->getQuery();
  16.         self::set_records_total();
  17.         self::filter();
  18.         self::set_records_filtered();
  19.         self::order_limit();
  20.         self::render_json();
  21.     }
  22.  
  23.     static function set_records_total()
  24.     {
  25.         self::$records_total = self::$query->count();
  26.     }
  27.  
  28.    
  29.     static function filter()
  30.     {
  31.         if (!empty(self::$request['search']['value'])) {
  32.             foreach (self::$request['columns'] as $column) {
  33.                 if ($column['searchable'] == 'true') {
  34.                     self::$query->orWhere($column['data'], 'like', '%' . self::$request['search']['value'] . '%');
  35.                 }
  36.             }
  37.         }
  38.     }
  39.  
  40.     static function set_records_filtered()
  41.     {
  42.         self::$records_filtered = self::$query->count();
  43.     }
  44.  
  45.     static function order_limit()
  46.     {
  47.         $start=isset(self::$request['start'])? self::$request['start']:0;
  48.         $length = isset(self::$request['length']) ? self::$request['length'] : 1;
  49.         self::$query->orderBy('id','desc');
  50.         self::$query->skip($start)->take($length);
  51.     }
  52.  
  53.    
  54.     static function render_json()
  55.     {
  56.         $array = [];
  57.         $array['draw'] = self::$request['draw'];
  58.         $array['recordsTotal'] = self::$records_total;
  59.         $array['recordsFiltered'] = self::$records_filtered;
  60.         $array['data'] = [];
  61.         $results = self::$query->get();
  62.         $array['data']=$results->toArray();
  63.         echo json_encode($array);
  64.     }
  65. }
  66.  
  67. //HOW TO USE
  68.  
  69. $query = Users::select('id', 'name');
  70. return Datatables::make($request, $query);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement