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+DBM的同学录程序(2)
Oct 09 PHP
ecshop 批量上传(加入自定义属性)
Mar 20 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
如何在smarty中增加类似foreach的功能自动加载数据
Jun 26 PHP
ThinkPHP3.1新特性之Action参数绑定
Jun 19 PHP
php缓冲输出实例分析
Jan 05 PHP
PHP实现数据分页显示的简单实例
May 26 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
PHP 中常量的知识整理
Apr 14 PHP
php语法检查的方法总结
Jan 21 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
javascript call和apply方法
2008/11/24 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
weex slider实现滑动底部导航功能
2017/08/28 Javascript
react redux入门示例
2018/04/19 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
在Layui中实现开关按钮的效果实例
2019/09/29 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
[03:36]2014DOTA2 TI小组赛综述 八强诞生进军钥匙球馆
2014/07/15 DOTA
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
Python实现文件复制删除
2016/04/19 Python
Python heapq使用详解及实例代码
2017/01/25 Python
python pandas模块基础学习详解
2019/07/03 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
Flask中jinja2的继承实现方法及实例
2021/03/03 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
班级活动策划书
2014/02/06 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
学前班评语大全
2014/05/04 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
正风肃纪剖析材料
2014/09/30 职场文书
离婚民事起诉状
2015/08/03 职场文书