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读取目录下所有文件的代码
Jan 07 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
作为PHP程序员应该了解MongoDB的五件事
Jun 03 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
PHP使用数组依次替换字符串中匹配项
Jan 08 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
浅谈php调用python文件
Mar 29 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
laravel 解决强制跳转 https的问题
Oct 22 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编实现程动态图像的创建代码
2008/09/28 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
Python网络编程详解
2017/10/31 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
Pandas 同元素多列去重的实例
2018/07/03 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
python 申请内存空间,用于创建多维数组的实例
2019/12/02 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
详解Python3中的 input() 函数
2020/03/18 Python
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
怎样写好创业计划书的内容
2014/02/06 职场文书
消防标语大全
2014/06/07 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
看雷锋电影观后感
2015/06/10 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书
个人合作协议范本
2015/08/06 职场文书
交通安全主题班会
2015/08/12 职场文书
Nginx + consul + upsync 完成动态负载均衡的方法详解
2021/03/31 Servers
Java图书管理系统,课程设计必用(源码+文档)
2021/06/30 Java/Android
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL