Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Libraries;
- class Datatables
- {
- public static $request;
- public static $query;
- public static $records_total;
- public static $records_filtered;
- static function make($request, $model)
- {
- self::$request = $request;
- self::$query = $model->getQuery();
- self::set_records_total();
- self::filter();
- self::set_records_filtered();
- self::order_limit();
- self::render_json();
- }
- static function set_records_total()
- {
- self::$records_total = self::$query->count();
- }
- static function filter()
- {
- if (!empty(self::$request['search']['value'])) {
- foreach (self::$request['columns'] as $column) {
- if ($column['searchable'] == 'true') {
- self::$query->orWhere($column['data'], 'like', '%' . self::$request['search']['value'] . '%');
- }
- }
- }
- }
- static function set_records_filtered()
- {
- self::$records_filtered = self::$query->count();
- }
- static function order_limit()
- {
- $start=isset(self::$request['start'])? self::$request['start']:0;
- $length = isset(self::$request['length']) ? self::$request['length'] : 1;
- self::$query->orderBy('id','desc');
- self::$query->skip($start)->take($length);
- }
- static function render_json()
- {
- $array = [];
- $array['draw'] = self::$request['draw'];
- $array['recordsTotal'] = self::$records_total;
- $array['recordsFiltered'] = self::$records_filtered;
- $array['data'] = [];
- $results = self::$query->get();
- $array['data']=$results->toArray();
- echo json_encode($array);
- }
- }
- //HOW TO USE
- $query = Users::select('id', 'name');
- return Datatables::make($request, $query);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement