PDO分頁查詢模塊介紹

簡(jiǎn)介

源碼請(qǐng)移步GitHub

schu-database是SchuEngine中的數(shù)據(jù)庫模塊,可以獨(dú)立使用,也可以利用zend-servicemanager驅(qū)動(dòng).

與上個(gè)版本的schu-database不同,這個(gè)版本完全脫離zend-db,依托于使用最廣泛的PDO擴(kuò)展,實(shí)現(xiàn)與數(shù)據(jù)庫的交互.

之所以棄用zend-db作為底層,是因?yàn)槠涓甙旱膶W(xué)習(xí)成本,直接導(dǎo)致了schu-database更加高昂的學(xué)習(xí)成本,需要不停的查閱手冊(cè),這不利于SchuEngine最初的期望.

在用法上schu-database完全等同于PDO的原生操作,最大程度上降低了學(xué)習(xí)成本.

在分頁上,schu-database會(huì)通過傳入的SQL語句.在原有SQL的基礎(chǔ)上,自動(dòng)生成分頁查詢,并且調(diào)用極其簡(jiǎn)單.

依賴

PDO擴(kuò)展

安裝

$ composer require schuengine/schu-database

配置

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

<?php

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);

傳入數(shù)組:

<?php

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' => '********',
],

//在應(yīng)用中
$db = $container->get('schu-database');

使用

在使用過程中,schu-database的操作完全繼承了PDO,比PDO多一個(gè)接口,即分頁.后續(xù)介紹.

所以,你可以直接將Schu\Database\Database即上例中的$db當(dāng)做PDO來操作.

分頁

schu-database的分頁接口非常簡(jiǎn)單如下:

/**
 * 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);

調(diào)用后,schu-database會(huì)自動(dòng)解析傳入的SQL語句.

  1. 獲得原始的ORDER BY,LIMIT,OFFSET以及子查詢語句.
  2. 生成原SQL語句的COUNT語句.
  3. 比對(duì)LIMITCOUNT結(jié)果,輸出正確的結(jié)果集總數(shù).
  4. 生成分頁查詢語句.
  5. 實(shí)例化\Schu\Database\Page,并返回.

類\Schu\Database\Page中包含分頁結(jié)果集的全部數(shù)據(jù),包括:

  1. 當(dāng)前頁
  2. 總頁數(shù)
  3. 每頁條目數(shù)
  4. 總條目數(shù)
  5. 結(jié)果集數(shù)組
  6. 原查詢語句
  7. 分頁查詢語句
  8. COUNT語句

詳細(xì)API請(qǐng)移步PageInterface

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容