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


Posted in PHP onJanuary 10, 2019

本文实例讲述了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层,灵活的查询数据。

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

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP实现多级树型菜单
Oct 09 PHP
IP138 IP地址查询小偷实现代码
Feb 15 PHP
PHP中文件缓存转内存缓存的方法
Dec 06 PHP
PHP中运用jQuery的Ajax跨域调用实现代码
Feb 21 PHP
php中运用http调用的GET和POST方法示例
Sep 29 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
php查询操作实现投票功能
May 09 PHP
ThinkPHP的SAE开发相关注意事项详解
Oct 09 PHP
php实现映射操作实例详解
Oct 02 PHP
php回调函数处理数组操作示例
Apr 13 PHP
tp5框架使用composer实现日志记录功能示例
Jan 10 #PHP
PHP微信支付结果通知与回调策略分析
Jan 10 #PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 #PHP
PHP如何通过表单直接提交大文件详解
Jan 08 #PHP
Laravel 队列使用的实现
Jan 08 #PHP
laravel 框架配置404等异常页面
Jan 07 #PHP
PHP array_shift()用法实例分析
Jan 07 #PHP
You might like
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
Javascript 读书笔记索引贴
2010/01/11 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
浅谈Node.js:fs文件系统模块
2016/12/08 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[48:48]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Dream TIME
2014/05/21 DOTA
python使用pil生成缩略图的方法
2015/03/26 Python
python使用fileinput模块实现逐行读取文件的方法
2015/04/29 Python
Python的装饰器用法学习笔记
2016/06/24 Python
神经网络python源码分享
2017/12/15 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python使用gRPC传输协议教程
2018/10/16 Python
详解Python字符串切片
2019/05/20 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
使用索引有什么好处
2016/07/27 面试题
给领导的检讨书
2014/02/16 职场文书
2014医学院领导干部四风对照检查材料思想汇报
2014/09/16 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
邀请函范文
2015/02/02 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
环境卫生标语
2015/08/03 职场文书