热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqlpdo分页类_PDO分页查询模块介绍

简介schu-database是SchuEngine中的数据库模块,可以独立使用,也可以利用zend-servicemanager驱动.与上个版本的schu-database不同,

简介

schu-database是SchuEngine中的数据库模块,可以独立使用,也可以利用zend-servicemanager驱动.

与上个版本的schu-database不同,这个版本完全脱离zend-db,依托于使用最广泛的PDO扩展,实现与数据库的交互.

之所以弃用zend-db作为底层,是因为其高昂的学习成本,直接导致了schu-database更加高昂的学习成本,需要不停的查阅手册,这不利于SchuEngine最初的期望.

在用法上schu-database完全等同于PDO的原生操作,最大程度上降低了学习成本.

在分页上,schu-database会通过传入的SQL语句.在原有SQL的基础上,自动生成分页查询,并且调用极其简单.

依赖

PDO扩展

安装

$ composer require schuengine/schu-database

配置

一般情况下(完全等同于PDO的__construct):

use Schu\Database\Database;

/**

* data source name of PDO $dsn

* db username $user

* db password $password

* options array $options

*/

$db = new Database($dsn, $user, $password, $options);

传入数组:

use Schu\Database\Database;

$dbOptions = [

'dsn' => 'mysql:host=localhost;dbname=test',

'username' => 'username',

'password' => '********',

'options' => [

//PDO options

],

];

$db = new Database($dbOptions);

通过zend-servicemanager

//在 ./config/autoload/global.php中

'schu-database' => [

'dsn' => 'mysql:host=localhost;dbname=test',

'options' => [

//PDO options

],

],

//在./config/autoload/local.php中

'schu-database' => [

'username' => 'username',

'password' => '********',

],

//在应用中

$db = $container->get('schu-database');

使用

在使用过程中,schu-database的操作完全继承了PDO,比PDO多一个接口,即分页.后续介绍.

所以,你可以直接将Schu\Database\Database即上例中的$db当做PDO来操作.

分页

schu-database的分页接口非常简单如下:

/**

* Get paginator result

*

* @param integer $page

* @param integer $itemCountPerPage

* @param string $sql

* @throws \Schu\Database\Exception\InvalidArgumentException

* @throws \Schu\Database\Exception\RuntimeException

* @return Page

*/

public function getPaginatorResult($page, $itemCountPerPage, $sql);

调用后,schu-database会自动解析传入的SQL语句.

获得原始的ORDER BY,LIMIT,OFFSET以及子查询语句.

生成原SQL语句的COUNT语句.

比对LIMIT和COUNT结果,输出正确的结果集总数.

生成分页查询语句.

实例化\Schu\Database\Page,并返回.

类\Schu\Database\Page中包含分页结果集的全部数据,包括:

当前页

总页数

每页条目数

总条目数

结果集数组

原查询语句

分页查询语句

COUNT语句



推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
author-avatar
c_陈可儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有