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 相关文章推荐
图形数字验证代码
Oct 09 PHP
php 目录与文件处理-郑阿奇(续)
Jul 04 PHP
php function用法如何递归及return和echo区别
Mar 07 PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
PHP递归的三种常用方式
Feb 28 PHP
Laravel框架处理用户的请求操作详解
Dec 20 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
Bootstrap table表格简单操作
2017/02/07 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
2019/04/17 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
JS+CSS实现动态时钟
2021/02/19 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
Python的面向对象编程方式学习笔记
2016/07/12 Python
python中import reload __import__的区别详解
2017/10/16 Python
利用python如何处理百万条数据(适用java新手)
2018/06/06 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
Python列表list操作相关知识小结
2020/01/29 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
中国领先的汽车保养服务平台:途虎养车
2019/10/18 全球购物
实习生体会的自我评价范文
2013/11/28 职场文书
最美劳动诗,致敬所有的劳动者!
2019/07/12 职场文书
Python批量将csv文件转化成xml文件的实例
2021/05/10 Python