php的db类库Eloquent单独使用系列(2) - 分页

阅读更多
我的Eloquent单独使用系列文章
php的db类库Eloquent单独使用系列(1)
php的db类库Eloquent单独使用系列(2) - 分页
php的db类库Eloquent单独使用系列(3) - sql日志
php的db类库Eloquent单独使用系列(4)- 事件监听
php的db类库Eloquent单独使用系列(5)- 模型转数组
php的db类库Eloquent单独使用系列(6)- 一对一关联
php的db类库Eloquent单独使用系列(7)- 一对多关联
php的db类库Eloquent单独使用系列(8)- 多对多关联
php的db类库Eloquent单独使用系列(9)- 多对多关联 - 表关联自身
php的db类库Eloquent单独使用系列(10)- 多对多关联 - 远程一对多
php的db类库Eloquent单独使用系列(11)- 多对多关联 - 添加模型属性
php的db类库Eloquent单独使用系列(12)- 结果集模型转数组 - 2



为了单独使用Eloquent分页,当然得先使用Eloquent库,

本代码完全脱离lavavel5.4环境。只加载最新的5.4类库,故意不使用模板,让代码含义更加清晰。

composer

"illuminate/database":"5.4.27" ,
"illuminate/events":"5.4.27",
"illuminate/pagination":"5.4.27"

建表
CREATE TABLE `test_databases` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `db_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '库名',
  `user_id` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '测试用户id',
  `created_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  `updated_at` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB


请自行插入一百条数据。

假设本机项目域名www.t3.com
本代码网址
http://www.t3.com/paginator/ill
首页只需输入上面网址即可,点击第2页,会自动加page查询参数。

addConnection([
           'driver'    => 'mysql',
           'host'      => '127.0.0.1',
           'database'  => 'test1',
           'username'  => 'root',
           'password'  => 'root',
           'charset'   => 'utf8mb4',
           'collation' => 'utf8mb4_unicode_ci',
           'prefix'    => '',
       ]);
       $capsule->setAsGlobal();
       $conn =$capsule; 
       echo "

Eloquent分页使用

"; $order = "id" ;// 这里定义排序字段。 $page = intval( $_GET["page"]); if (!$page) { $page=1; } $per_page = 4; //每页显示4条结果 // 这里请自己先手动插入一条数据,表结构见前面的文章。 $paginator = $conn::table('test_databases')->select(['db_name','user_id'])->orderBy($order, 'asc') ->limit(100) ->paginate($per_page, ['*'],'page',$page); foreach ($paginator as $v) { echo $v->db_name . " = " . $v->user_id."
"; } //必须设置网址 $paginator->setPath('/paginator/ill'); //设置其他query参数 // $users->appends('order', $order); // 得到laravel构建的链接结果,是数组。分3部分,first, slider, last $win = new UrlWindow($paginator); // 2×3 +1 就是显示在中间的链接个数, // 也可以不填写的,默认是3. $url_arr = $win->get(3); if ($paginator->hasPages()) { //有结果集才显示啊 if (!$paginator->onFirstPage()) { echo "上页"."  "; } if (isset( $url_arr['first'] )) { foreach ($url_arr['first'] as $k=> $v ) { $style=" "; if ($k == $paginator->currentPage()) { $style=" style='color:red' "; } echo "$k"."  "; } } if (isset( $url_arr['slider'] )) { echo '...'; // 这样页面漂亮些。 foreach ($url_arr['slider'] as $k=> $v ) { $style=" "; if ($k == $paginator->currentPage()) { $style=" style='color:red' "; } echo "$k"."  "; } } if (isset( $url_arr['last'] )) { echo '...'; // 这样页面漂亮些。 foreach ($url_arr['last'] as $k=> $v ) { $style=" "; if ($k == $paginator->currentPage()) { $style=" style='color:red' "; } echo "$k"."  "; } } if ($paginator->lastPage()!=$page) { echo "下页"."  "; } }else { echo "没查到数据"; } } }


展示效果
php的db类库Eloquent单独使用系列(2) - 分页_第1张图片
php的db类库Eloquent单独使用系列(2) - 分页_第2张图片
php的db类库Eloquent单独使用系列(2) - 分页_第3张图片
php的db类库Eloquent单独使用系列(2) - 分页_第4张图片

  • php的db类库Eloquent单独使用系列(2) - 分页_第5张图片
  • 大小: 11 KB
  • php的db类库Eloquent单独使用系列(2) - 分页_第6张图片
  • 大小: 12.3 KB
  • php的db类库Eloquent单独使用系列(2) - 分页_第7张图片
  • 大小: 13.9 KB
  • php的db类库Eloquent单独使用系列(2) - 分页_第8张图片
  • 大小: 15.1 KB
  • 查看图片附件

你可能感兴趣的:(php,Eloquent,pagination,分页)