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 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
实用PHP会员权限控制实现原理分析
May 29 PHP
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
Mar 27 PHP
PHP中模拟处理HTTP PUT请求的例子
Jul 22 PHP
PHP 正则表达式小结
Feb 12 PHP
php猴子选大王问题解决方法
May 12 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
Feb 06 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 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
在线增减.htpasswd内的用户
2006/10/09 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
2017/02/04 PHP
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
Angular Module声明和获取重载实例代码
2016/09/14 Javascript
vue购物车插件编写代码
2017/11/27 Javascript
响应式框架Bootstrap栅格系统的实例
2017/12/19 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
2020/08/06 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
python字典的常用操作方法小结
2016/05/16 Python
Python制作简易注册登录系统
2016/12/15 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
python去除文件中重复的行实例
2018/06/29 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
详谈tensorflow gfile文件的用法
2020/02/05 Python
python的链表基础知识点
2020/09/13 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
美国批发零售网站:GearXS
2016/07/26 全球购物
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
《理想》教学反思
2014/02/17 职场文书
党建目标管理责任书
2014/07/25 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
护士求职自荐信
2015/03/25 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
惊天动地观后感
2015/06/10 职场文书
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android