| 对于laravel分页,自带一个paginate的方法,很好用,但是也是有局限性的。 所以自己针对于此写了一个自己的分页,具体代码如下 use ...; 
/**
 
自定义分页类,适合少数据的查询,多数据的时候不推荐Class CustomPaginate@package AppToolsPaginate*/
 class CustomPaginate
 {
 /**
 
自定义数组分页@param $data = 返回结果@param $page@param $limit@return mixed/
 public static function paginate($data,$page = 1,$limit = 10)
 {
 if (!is_numeric($page) || !is_numeric($limit)) {
 return false;
 }
 $count = count($data);
 $data = array_slice($data,($page - 1)  $limit,$limit);
 return new LengthAwarePaginator($data,$count,$limit,$page);
 }
 /** 
参数解释 对外暴露的方法@param $data = array|collection 切记只支持这两种@param $page = 当前页@param $limit = 每一页展示几条@return array|false返回结果为数组调用实例: CustomPaginate::paginateToArray($data,$request->page,$request->limit);*/
 public static function paginateToArray($data,$limit = 10)
 {
 $isValidate = self::validate($data,$page,$limit);           //验证
 if ($isValidate === false) {
 return false;
 }
 $res = self::paginate($data,$limit)->toArray();         //分页数据转换为数组
//上一页 || 下一页 => path
       if ($res['prev_page_url'] != null) {$prev_page = $page - 1;
 $res['prev_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $prev_page . "&limit=" . $limit;
 }
 if ($res['next_page_url'] != null) {
 $next_page = $page + 1;
 $res['next_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $next_page . "&limit=" . $limit;
 }
 return $res;
 }
 /** 
验证参数是否合法*/
 public static function validate(&$data,&$page = 1,&$limit = 10)
 {
 $page = empty($page) ? 1 : $page;
 $limit = empty($limit) ? 10 : $limit;
 if (!is_array($data) && !$data instanceof Collection) {
 return false;//"自定义分页方法只支持数组数据和集合数据";
 }
 if (!is_numeric($page) || !is_numeric($limit)) {
 return false;//"page limit 参数只支持数字";
 }
 if ($data instanceof Collection) {
 return $data = $data->toArray();
 }
 return $data;
 }
 }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |