当前位置:首页 > CMS教程 > Thinkphp > 列表

tp5(thinkPHP5)框架实现多数据库查询的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-11-03 21:50:51 浏览: 评论:0 

本文实例讲述了tp5(thinkPHP5)框架实现多数据库查询的方法,分享给大家供大家参考,具体如下:

引言:

有时候一个管理后台,需要涉及到多个数据库。比如,商城管理、直播管理、消息管理等等,它们都有自己的数据库,这个时候,就需要去连接多个数据库,进行处理了。thinkphp可以支持多个数据库连接。

如何处理呢?

1.进行多个数据库的配置

默认会连接database.php中的数据库信息。

  1. <?php 
  2. // +---------------------------------------------------------------------- 
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK ] 
  4. // +---------------------------------------------------------------------- 
  5. // | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved. 
  6. // +---------------------------------------------------------------------- 
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) 
  8. // +---------------------------------------------------------------------- 
  9. // | Author: liu21st <liu21st@gmail.com> 
  10. // +---------------------------------------------------------------------- 
  11. return [ 
  12.   // 数据库类型 
  13.   'type'      => 'mysql'
  14.   // 服务器地址 
  15.   'hostname'    => ''
  16.   // 数据库名 
  17.   'database'    => ''
  18.   // 数据库用户名 
  19.   'username'    => ''
  20.   // 数据库密码 
  21.   'password'    => ''
  22.   // 数据库连接端口 
  23.   'hostport'    => '3306'
  24.   // 数据库编码默认采用utf8 
  25.   'charset'     => ''
  26.   // 数据库表前缀 
  27.   'prefix'     => '' 
  28. ]; 

tp5会自动加载database.php

我们可以在extra文件夹中,再创建几个其他数据库的配置,比如database_mall,database_live,database_app等。

2.初始化

在model模块中进行初始化

  1. <?php 
  2. namespace app\admin\model; 
  3. use think\Model; 
  4. use think\Db; 
  5. class LiveRecharge extends Model 
  6.   protected $db_app
  7.   function __construct() 
  8.   { 
  9.     $this->db_app = Db::connect('database_app'); 
  10.   } 

3.使用

$this->db_app->table('order')->select();

这样就可以查询其他数据库中的数据了。

下面是全的代码:

  1. <?php 
  2. namespace app\admin\model; 
  3. use think\Model; 
  4. use think\Db; 
  5. class LiveRecharge extends Model 
  6.   protected $db_app
  7.   function __construct() 
  8.   { 
  9.     $this->db_app = Db::connect('database_app'); 
  10.   } 
  11.   // 获取分页 
  12.   public function getList($customer_id = '',$nickname = '',$paytime = '',$pagesize = ''
  13.   { 
  14.     $pagesize = $pagesize && $pagesize > 0 ? $pagesize : config('default_page_size'); 
  15.     $where = array(); 
  16.     $where['o.type'] = 3; 
  17.     if ($customer_id) { 
  18.       $where['o.uid'] = $customer_id
  19.     } 
  20.     if ($nickname) { 
  21.       $where['c.NickName'] = ['like','%'.$nickname.'%']; 
  22.     } 
  23.     if ($paytime) { 
  24.       $where['o.addtime'] = array(['>',$paytime.' 00:00'], ['<',$paytime.' 23:59']); 
  25.     } 
  26.     $result = $this->db_app->table('order'
  27.       ->alias('o'
  28.       ->where($where
  29.       ->join('customer c','o.uid = c.Id'
  30.       ->field('o.*,c.NickName as nickname')->paginate($pagesize,false,[ 
  31.         'query' => [ 
  32.           'customer_id'=>$customer_id
  33.           'nickname'=>$nickname
  34.           'paytime'=>$paytime 
  35.         ] 
  36.       ]); 
  37.     $page = $result->render(); // 分页 
  38.     $data = $result->all(); // 数据 
  39.     foreach ($data as $k=>$v) { 
  40.       $data[$k]['diamond'] = intval($v['money'])*10; 
  41.     } 
  42.     //    dump($this->db_app->getLastSql()); 
  43.     $total_diamond = $this->db_app->table('order')->where('type',3)->sum('money*10'); 
  44.     $outData['page'] = $page
  45.     $outData['data'] = $data
  46.     $outData['total_diamond'] = $total_diamond
  47.     return $outData
  48.   } 

小结:灵活运用model层,灵活的查询数据。

学会组织语言,学会撰写文档,学会归纳总结。

Tags: tp5多数据库查询

分享到: