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 SEO优化之URL优化方法
Apr 21 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
php中用foreach来操作数组的代码
Jul 17 PHP
php遍历文件夹所有文件子文件夹函数代码
Nov 27 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
PHP的password_hash()使用实例
Mar 17 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
利用php-cli和任务计划实现刷新token功能的方法
May 03 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 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获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
php提高脚本性能的4个技巧
2020/08/18 PHP
二级域名转向类
2006/11/09 Javascript
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
JS跨域代码片段
2012/08/30 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
JS.findElementById()使用介绍
2013/09/21 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
js 原型对象和原型链理解
2017/02/09 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python实现移位加密和解密
2019/03/22 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
Python模块相关知识点小结
2020/03/09 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
幼儿园英语教学反思
2014/01/30 职场文书
优秀企业获奖感言
2014/02/01 职场文书
消防安全汇报材料
2014/02/08 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书