tp5(thinkPHP5)框架实现多数据库查询的方法
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-03 21:50:51 浏览: 评论:0
本文实例讲述了tp5(thinkPHP5)框架实现多数据库查询的方法,分享给大家供大家参考,具体如下:
引言:
有时候一个管理后台,需要涉及到多个数据库。比如,商城管理、直播管理、消息管理等等,它们都有自己的数据库,这个时候,就需要去连接多个数据库,进行处理了。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层,灵活的查询数据。
学会组织语言,学会撰写文档,学会归纳总结。
Tags: tp5多数据库查询
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)