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 21 PHP
PHP Token(令牌)设计
Mar 15 PHP
php中get_headers函数的作用及用法的详细介绍
Apr 27 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
PHP错误Allowed memory size of 67108864 bytes exhausted的3种解决办法
Jul 28 PHP
详解PHP中的PDO类
Jul 06 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP如何将图片文件上传到另外一台服务器上
Aug 26 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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的curl实现get和post的代码
2008/08/23 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
window.open不被拦截的实现代码
2012/08/22 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
js实现分割上传大文件
2016/03/09 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
python 批量修改/替换数据的实例
2018/07/25 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
房地产销售经理岗位职责
2014/01/01 职场文书
大学活动策划书范文
2014/01/10 职场文书
家长写给老师的建议书
2014/03/13 职场文书
单位租车协议书
2015/01/29 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书