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

[size=x-large]我的Eloquent单独使用系列文章[/size]
[url=http://xieye.iteye.com/blog/2382907]php的db类库Eloquent单独使用系列(1)[/url]
[url=http://xieye.iteye.com/blog/2383390]php的db类库Eloquent单独使用系列(2) - 分页[/url]
[url=http://xieye.iteye.com/blog/2387809]php的db类库Eloquent单独使用系列(3) - sql日志[/url]
[url=http://xieye.iteye.com/blog/2387983]php的db类库Eloquent单独使用系列(4)- 事件监听[/url]
[url=http://xieye.iteye.com/blog/2383466]php的db类库Eloquent单独使用系列(5)- 模型转数组[/url]
[url=http://xieye.iteye.com/blog/2388023]php的db类库Eloquent单独使用系列(6)- 一对一关联[/url]
[url=http://xieye.iteye.com/blog/2388029]php的db类库Eloquent单独使用系列(7)- 一对多关联[/url]
[url=http://xieye.iteye.com/blog/2388150]php的db类库Eloquent单独使用系列(8)- 多对多关联[/url]
[url=http://xieye.iteye.com/blog/2388162]php的db类库Eloquent单独使用系列(9)- 多对多关联 - 表关联自身[/url]
[url=http://xieye.iteye.com/blog/2388280]php的db类库Eloquent单独使用系列(10)- 多对多关联 - 远程一对多[/url]
[url=http://xieye.iteye.com/blog/2388521]php的db类库Eloquent单独使用系列(11)- 多对多关联 - 添加模型属性[/url]
[url=http://xieye.iteye.com/blog/2389182]php的db类库Eloquent单独使用系列(12)- 结果集模型转数组 - 2[/url]


为了单独使用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查询参数。


<?php

namespace app\control;
use \Illuminate\Database\Capsule\Manager as Capsule;
// use \Illuminate\Events\Dispatcher;
// use \Illuminate\Container\Container;
use \Illuminate\Pagination\UrlWindow;
class Paginator {

public function ill( $req, $res, $args) {
$capsule = new Capsule;
$capsule->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 "<h1>Eloquent分页使用</h1>";

$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."<br>";
}

//必须设置网址
$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 "<a href='{$paginator->previousPageUrl()}'>上页</a>"."  ";
}

if (isset( $url_arr['first'] )) {
foreach ($url_arr['first'] as $k=> $v ) {
$style=" ";
if ($k == $paginator->currentPage()) {
$style=" style='color:red' ";
}
echo "<a {$style} href='{$v}'>$k</a>"."  ";
}
}

if (isset( $url_arr['slider'] )) {
echo '...'; // 这样页面漂亮些。
foreach ($url_arr['slider'] as $k=> $v ) {
$style=" ";
if ($k == $paginator->currentPage()) {
$style=" style='color:red' ";
}
echo "<a {$style} href='{$v}'>$k</a>"."  ";
}
}

if (isset( $url_arr['last'] )) {
echo '...'; // 这样页面漂亮些。
foreach ($url_arr['last'] as $k=> $v ) {
$style=" ";
if ($k == $paginator->currentPage()) {
$style=" style='color:red' ";
}
echo "<a {$style} href='{$v}'>$k</a>"."  ";
}
}

if ($paginator->lastPage()!=$page) {
echo "<a href='{$paginator->nextPageUrl()}'>下页</a>"."  ";
}

}else {
echo "没查到数据";
}


}
}


展示效果
[img]http://dl2.iteye.com/upload/attachment/0125/9294/f596ddca-1247-36fa-a427-a09fae0d213e.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0125/9296/a63fa1c1-a5d3-37da-9ab0-2d10fa430e3f.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0125/9298/7a65f393-28b7-3574-a165-c986eb114614.png[/img]
[img]http://dl2.iteye.com/upload/attachment/0125/9300/31d5e3a5-8d02-3ae6-ac13-b088e2ac4785.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值