tp5實現多資料庫查詢
引言:
有時候一個管理後臺,需要涉及到多個資料庫。比如,商城管理、直播管理、訊息管理等等,它們都有自己的資料庫。這個時候,就需要去連線多個資料庫,進行處理了。thinkphp可以支援多個資料庫連線。
如何處理呢?
1.進行多個資料庫的配置
預設會連線database.php中的資料庫資訊。
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
return [
// 資料庫型別
`type` => `mysql`,
// 伺服器地址
`hostname` => ``,
// 資料庫名
`database` => ``,
// 資料庫使用者名稱
`username` => ``,
// 資料庫密碼
`password` => ``,
// 資料庫連線埠
`hostport` => `3306`,
// 資料庫編碼預設採用utf8
`charset` => ``,
// 資料庫表字首
`prefix` => ``
];
tp5會自動載入database.php
我們可以在extra資料夾中,再建立幾個其他資料庫的配置,比如database_mall,database_live,database_app等。
2.初始化
在model模組中進行初始化
<?php
namespace appadminmodel;
use thinkModel;
use thinkDb;
class LiveRecharge extends Model
{
protected $db_app;
function __construct()
{
$this->db_app = Db::connect(`database_app`);
}
}
3.使用
$this->db_app->table(`order`)->select();
這樣就可以查詢其他資料庫中的資料了。
下面是全的程式碼:
<?php
namespace appadminmodel;
use thinkModel;
use thinkDb;
class LiveRecharge extends Model
{
protected $db_app;
function __construct()
{
$this->db_app = Db::connect(`database_app`);
}
// 獲取分頁
public function getList($customer_id = ``,$nickname = ``,$paytime = ``,$pagesize = ``)
{
$pagesize = $pagesize && $pagesize > 0 ? $pagesize : config(`default_page_size`);
$where = array();
$where[`o.type`] = 3;
if ($customer_id) {
$where[`o.uid`] = $customer_id;
}
if ($nickname) {
$where[`c.NickName`] = [`like`,`%`.$nickname.`%`];
}
if ($paytime) {
$where[`o.addtime`] = array([`>`,$paytime.` 00:00`], [`<`,$paytime.` 23:59`]);
}
$result = $this->db_app->table(`order`)
->alias(`o`)
->where($where)
->join(`customer c`,`o.uid = c.Id`)
->field(`o.*,c.NickName as nickname`)->paginate($pagesize,false,[
`query` => [
`customer_id`=>$customer_id,
`nickname`=>$nickname,
`paytime`=>$paytime
]
]);
$page = $result->render(); // 分頁
$data = $result->all(); // 資料
foreach ($data as $k=>$v) {
$data[$k][`diamond`] = intval($v[`money`])*10;
}
// dump($this->db_app->getLastSql());
$total_diamond = $this->db_app->table(`order`)->where(`type`,3)->sum(`money*10`);
$outData[`page`] = $page;
$outData[`data`] = $data;
$outData[`total_diamond`] = $total_diamond;
return $outData;
}
}
小結:靈活運用model層,靈活的查詢資料。
學會組織語言,學會撰寫文件,學會歸納總結。
本文轉自TBHacker部落格園部落格,原文連結:http://www.cnblogs.com/jiqing9006/p/7649830.html,如需轉載請自行聯絡原作者
相關文章
- Excel資料庫轉MySQL,實現查詢Excel資料庫MySql
- 多個遠端資料庫查詢資料庫
- 解析MSSQL跨資料庫查詢的實現方法SQL資料庫
- 如何使用 Milvus 向量資料庫實現實時查詢資料庫
- 資料庫查詢資料庫
- 資料庫 - 資料查詢資料庫
- 資料庫資料的查詢----連線查詢資料庫
- java 查詢資料庫並生成多層childrenJava資料庫
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- 小程式雲開發模糊查詢,實現資料庫多欄位的模糊搜尋資料庫
- 使用cglib實現資料庫框架的級聯查詢CGLib資料庫框架
- SQL server資料庫with as子句與遞迴查詢的實現SQLServer資料庫遞迴
- 資料庫高階查詢之子查詢資料庫
- 多個異構資料庫如何關聯查詢資料庫
- Oracle 查詢多個資料Oracle
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 查詢資料庫大小資料庫
- 資料庫排序查詢資料庫排序
- Jemter查詢資料庫資料庫
- SQL Server實戰四:查詢資料庫的資料SQLServer資料庫
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- efcore 跨表查詢,實現一個介面內查詢兩個不同資料庫裡各自的表資料資料庫
- Redis多機資料庫實現Redis資料庫
- 資料庫基礎查詢--單表查詢資料庫
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- 求教 j2ee 查詢資料庫的具體實現資料庫
- 資料庫查詢語句資料庫
- 資料庫查詢優化資料庫優化
- mysql資料庫多表查詢MySql資料庫
- mysql資料庫容量查詢MySql資料庫
- 資料庫查詢步驟資料庫
- 資料庫查詢配置值資料庫
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 查詢資料庫後是返回ResultSet實現中遇到的問題資料庫
- django使用多個資料庫實現Django資料庫
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 概括SQL Server實時查詢Oracle資料庫WSSQLServerOracle資料庫