• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
123457595 显示全部楼层 发表于 2021-10-26 13:56:28 |阅读模式 打印 上一主题 下一主题
本文实例报告了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. {
  7.   protected $db_app;
  8.   function __construct()
  9.   {
  10.     $this->db_app = Db::connect('database_app');
  11.   }
  12. }
复制代码
3.利用
  1. $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. {
  7.   protected $db_app;
  8.   function __construct()
  9.   {
  10.     $this->db_app = Db::connect('database_app');
  11.   }
  12.   // 获取分页
  13.   public function getList($customer_id = '',$nickname = '',$paytime = '',$pagesize = '')
  14.   {
  15.     $pagesize = $pagesize && $pagesize > 0 ? $pagesize : config('default_page_size');
  16.     $where = array();
  17.     $where['o.type'] = 3;
  18.     if ($customer_id) {
  19.       $where['o.uid'] = $customer_id;
  20.     }
  21.     if ($nickname) {
  22.       $where['c.NickName'] = ['like','%'.$nickname.'%'];
  23.     }
  24.     if ($paytime) {
  25.       $where['o.addtime'] = array(['>',$paytime.' 00:00'], ['<',$paytime.' 23:59']);
  26.     }
  27.     $result = $this->db_app->table('order')
  28.       ->alias('o')
  29.       ->where($where)
  30.       ->join('customer c','o.uid = c.Id')
  31.       ->field('o.*,c.NickName as nickname')->paginate($pagesize,false,[
  32.         'query' => [
  33.           'customer_id'=>$customer_id,
  34.           'nickname'=>$nickname,
  35.           'paytime'=>$paytime
  36.         ]
  37.       ]);
  38.     $page = $result->render(); // 分页
  39.     $data = $result->all(); // 数据
  40.     foreach ($data as $k=>$v) {
  41.       $data[$k]['diamond'] = intval($v['money'])*10;
  42.     }
  43.     //    dump($this->db_app->getLastSql());
  44.     $total_diamond = $this->db_app->table('order')->where('type',3)->sum('money*10');
  45.     $outData['page'] = $page;
  46.     $outData['data'] = $data;
  47.     $outData['total_diamond'] = $total_diamond;
  48.     return $outData;
  49.   }
  50. }
复制代码
小结:灵活运用model层,灵活的查询数据。
学会构造语言,学会撰写文档,学会归纳总结。
更多关于thinkPHP相关内容感兴趣的读者可检察本站专题:《ThinkPHP入门教程》、《thinkPHP模板操纵本领总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技能总结》。
渴望本文所述对各人基于ThinkPHP框架的PHP程序计划有所资助。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作