簡(jiǎn)介
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語句.
- 獲得原始的
ORDER BY,LIMIT,OFFSET以及子查詢語句. - 生成原
SQL語句的COUNT語句. - 比對(duì)
LIMIT和COUNT結(jié)果,輸出正確的結(jié)果集總數(shù). - 生成分頁查詢語句.
- 實(shí)例化\Schu\Database\Page,并返回.
類\Schu\Database\Page中包含分頁結(jié)果集的全部數(shù)據(jù),包括:
- 當(dāng)前頁
- 總頁數(shù)
- 每頁條目數(shù)
- 總條目數(shù)
- 結(jié)果集數(shù)組
- 原查詢語句
- 分頁查詢語句
- COUNT語句
詳細(xì)API請(qǐng)移步PageInterface