如何使用ThinkPHP5框架进行多数据库查询操作?

更新于
2026-09-23 01:22:19
1阅读来源:SEO资讯
  • 内容介绍
  • 相关推荐

本文共计954个文字,预计阅读时间需要4分钟。

如何使用ThinkPHP5框架进行多数据库查询操作?

本实例展示了TP5(ThinkPHP5)框架实现多数据库查询的方法。以下为简要介绍:

引言:有时一个管理后台需要接入多个数据库,例如:商城管理、直播管理、消息等。

实现方法:

1.配置多数据库连接

在`config/database.php`中添加数据库配置:

php'databases'=> [ 'db1'=> [ 'type'=> 'mysql', 'hostname'=> 'localhost', 'database'=> 'db1', 'username'=> 'root', 'password'=> '123456', 'hostport'=> '3306', 'params'=> [], 'charset'=> 'utf8', 'prefix'=> 'tp5_', ], 'db2'=> [ 'type'=> 'mysql', 'hostname'=> 'localhost', 'database'=> 'db2', 'username'=> 'root', 'password'=> '123456', 'hostport'=> '3306', 'params'=> [], 'charset'=> 'utf8', 'prefix'=> 'tp5_', ], // ...更多数据库配置],

2. 选择数据库连接在控制器中,根据需要选择数据库连接:

phpuse think\facade\Db;

class SomeController{ public function index() { $db1=Db::connect('db1'); $data1=$db1->table('table1')->select();

如何使用ThinkPHP5框架进行多数据库查询操作?

$db2=Db::connect('db2'); $data2=$db2->table('table2')->select();

return json([ 'data1'=> $data1, 'data2'=> $data2, ]); }}

3. 使用多数据库查询在查询中,指定数据库连接:

php$data1=Db::table('table1')->db('db1')->select();$data2=Db::table('table2')->db('db2')->select();

这样,您就可以在TP5框架中实现多数据库查询了。希望对您有所帮助!

本文实例讲述了tp5(thinkPHP5)框架实现多数据库查询的方法。分享给大家供大家参考,具体如下:

引言:

有时候一个管理后台,需要涉及到多个数据库。比如,商城管理、直播管理、消息管理等等,它们都有自己的数据库。这个时候,就需要去连接多个数据库,进行处理了。thinkphp可以支持多个数据库连接。

如何处理呢?

1.进行多个数据库的配置

默认会连接database.php中的数据库信息。

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( 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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

本文共计954个文字,预计阅读时间需要4分钟。

如何使用ThinkPHP5框架进行多数据库查询操作?

本实例展示了TP5(ThinkPHP5)框架实现多数据库查询的方法。以下为简要介绍:

引言:有时一个管理后台需要接入多个数据库,例如:商城管理、直播管理、消息等。

实现方法:

1.配置多数据库连接

在`config/database.php`中添加数据库配置:

php'databases'=> [ 'db1'=> [ 'type'=> 'mysql', 'hostname'=> 'localhost', 'database'=> 'db1', 'username'=> 'root', 'password'=> '123456', 'hostport'=> '3306', 'params'=> [], 'charset'=> 'utf8', 'prefix'=> 'tp5_', ], 'db2'=> [ 'type'=> 'mysql', 'hostname'=> 'localhost', 'database'=> 'db2', 'username'=> 'root', 'password'=> '123456', 'hostport'=> '3306', 'params'=> [], 'charset'=> 'utf8', 'prefix'=> 'tp5_', ], // ...更多数据库配置],

2. 选择数据库连接在控制器中,根据需要选择数据库连接:

phpuse think\facade\Db;

class SomeController{ public function index() { $db1=Db::connect('db1'); $data1=$db1->table('table1')->select();

如何使用ThinkPHP5框架进行多数据库查询操作?

$db2=Db::connect('db2'); $data2=$db2->table('table2')->select();

return json([ 'data1'=> $data1, 'data2'=> $data2, ]); }}

3. 使用多数据库查询在查询中,指定数据库连接:

php$data1=Db::table('table1')->db('db1')->select();$data2=Db::table('table2')->db('db2')->select();

这样,您就可以在TP5框架中实现多数据库查询了。希望对您有所帮助!

本文实例讲述了tp5(thinkPHP5)框架实现多数据库查询的方法。分享给大家供大家参考,具体如下:

引言:

有时候一个管理后台,需要涉及到多个数据库。比如,商城管理、直播管理、消息管理等等,它们都有自己的数据库。这个时候,就需要去连接多个数据库,进行处理了。thinkphp可以支持多个数据库连接。

如何处理呢?

1.进行多个数据库的配置

默认会连接database.php中的数据库信息。

<?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006~2016 thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( 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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。