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
Dec 23 PHP
php写的简易聊天室代码
Jun 04 PHP
PHP file_exists问题杂谈
May 07 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
php代码书写习惯优化小结
Jun 20 PHP
php 中文字符串首字母的获取函数分享
Nov 04 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
PHP弱类型的安全问题详细总结
Sep 25 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
PDO::_construct讲解
Jan 27 PHP
php项目中类的自动加载实例讲解
Sep 12 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
十天学会php(3)
2006/10/09 PHP
php画图实例
2014/11/05 PHP
php中动态调用函数的方法
2015/03/16 PHP
php实现网站留言板功能
2015/11/04 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP性能优化大全(php.ini)
2016/05/20 PHP
基于php实现的验证码小程序
2016/12/13 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
jQuery实现dialog设置focus焦点的方法
2015/06/10 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
python中round函数如何使用
2020/06/19 Python
Python进行统计建模
2020/08/10 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
什么是Remote Module
2016/06/10 面试题
医院2014国庆节活动策划方案
2014/09/21 职场文书
个人四风问题整改措施
2014/10/24 职场文书
教师先进事迹材料
2014/12/16 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
致三级跳运动员加油稿
2015/07/21 职场文书
高中历史教学反思
2016/02/19 职场文书
学校就业保障协议书
2019/06/24 职场文书