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 app\admin\model;
use think\Model;
use think\Db;
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 app\admin\model;
use think\Model;
use think\Db;
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层,灵活的查询数据。
学会组织语言,学会撰写文档,学会归纳总结。
tp5实现多数据库查询的更多相关文章
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- [转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值
本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /****************************** ...
- 各数据库查询前N条记录的SQL语句
sql在不同数据库查询前几条数据 1. ORACLE SELECT * FROM TABLE_NAME WHERE ROWNUM <= N; HQL: from table_name t or ...
- Atitit DbServiceV4qb9 数据库查询类库v4 新特性
Atitit DbServiceV4qb9 数据库查询类库v4 新特性 V4新特性 安全特性,屏蔽了executeUpdate,使用v2版 Sql异常转换,特别转换了DuplicateEnt ...
- C#与mysql做ASP.NET网页数据库查询速度测试
两种方法是:1,使用mysql数据库的存储过程:2,C#编码,做网页后台与mysql数据库连接,前台测试显示测试过结果下面我将分别讲解两种方法的具体实现. 1,使用mysql数据库的存储过程插入万条大 ...
- 第九十九天上课 PHP TP框架 数据库查询和增加
在Model文件夹下创建模型,文件命名规则 : 表名Model.class.php <?php namespace Home\Model; use Think\Model; class yong ...
- mysql数据库查询pdo的用法
最早的php对mysql数据库查询是mysql和mysqli方法,后来php的新版本进一步封住了该方法,于是又pdo,抛开php框架,使用pdo查询数据,使用也是相当简便 <?php ini_s ...
- 下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作
下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...
- iBatis.Net(C#)数据库查询
引用请注明http://www.cnblogs.com/13590/archive/2013/03/14/2958735.html 摘要:查询是数据库SQL语言的核心,本文介绍了通过iBatis.N ...
随机推荐
- 2015 Multi-University Training Contest 8 hdu 5390 tree
tree Time Limit: 8000ms Memory Limit: 262144KB This problem will be judged on HDU. Original ID: 5390 ...
- HDU 4253 Two Famous Companies
Two Famous Companies Time Limit: 15000ms Memory Limit: 32768KB This problem will be judged on HDU. O ...
- ZJU 2676 Network Wars
Network Wars Time Limit: 5000ms Memory Limit: 32768KB This problem will be judged on ZJU. Original I ...
- 文件类似性推断 -- SimHash
近期调研了一下simhash算法,它主要用在谷歌网页去重中.网上有非常多原理性的介绍. 既然能够用来推断文件的相似性,就想知道效果怎么样.simhash的准确度是否依赖于分词算法?是否和simhash ...
- 算法 - 求一个数组的最长递减子序列(C++)
//************************************************************************************************** ...
- java布局管理
FlowLayout :组件在一行中按加入的先后顺序从左至右水平排列,排满后折行,每行中的组件都居中排列.BorderLayout:把容器空间划分为北.南.西.东.中五个区,每加入一个组件都应说明把这 ...
- Codeforces 659F Polycarp and Hay 并查集
链接 Codeforces 659F Polycarp and Hay 题意 一个矩阵,减小一些数字的大小使得构成一个连通块的和恰好等于k,要求连通块中至少保持一个不变 思路 将数值从小到大排序,按顺 ...
- 关于javascript 与iOS交互的简单使用
关于导入 JavaScriptCore 这个就不说了 js交互我们首先用到webView与webView的代理 基本上是很简单,,不过后台10分的坑 以下是代码 在webView的加载完成里面 fun ...
- java算法数据结构
原文地址:github.com/kdn251/interviews 译文出自:掘金翻译计划 译者:王下邀月熊 校对者:PhxNirvana.根号三 这个 链接 用来查看本翻译与英文版是否有差别(如果你 ...
- vs2015汉化
VS2015汉化 VS2015安装打开后默认是英文的,将它改成中文的VS 1.安装下载好的语言包进行安装 2.正在安装 3.安装完成后关闭 4.打开VS2015默认不是中文的,点击Tools--> ...