前言
有時候,我們需要配置多個數據庫,根據業務查詢每個資料庫下不同的表。
接下來,我們一步一步實現。
一、建立資料庫
我這裡測試使用的是本地環境(127.0.0.1)。
建立如下圖所示 資料庫及表(使用者表 / 管理員表),簡單寫點東西:
admin(資料庫名):administrator_information(表名)
user(資料庫名):essential_information(表名)
二、配置資料庫
注意:資料庫連線引數(如使用者名稱密碼)應為你個人的,這裡暫時用我的,請自行更改。
在 Thinkphp 6
目錄中依次定位【config
】 →【database.php
】,將剛才建立的資料庫資訊寫入配置:
// 資料庫連線配置資訊
// 我們可以在資料庫配置檔案中定義多個連線資訊
// 可理解為每個陣列項即為一個數據庫
'connections' => [
/**
* 使用者
*/
'user' => [
// 資料庫型別
'type' => 'mysql',
// 伺服器地址
'hostname' => '127.0.0.1',
// 資料庫名
'database' => 'user',
// 使用者名稱
'username' => 'root',
// 密碼
'password' => 'root',
// 埠
'hostport' => '3306',
// 資料庫連線引數
'params' => [],
// 資料庫編碼預設採用utf8
'charset' => 'utf8',
// 資料庫表字首
'prefix' => '',
// 資料庫部署方式:0 集中式(單一伺服器),1 分散式(主從伺服器)
'deploy' => 0,
// 資料庫讀寫是否分離 主從式有效
'rw_separate' => false,
// 讀寫分離後 主伺服器數量
'master_num' => 1,
// 指定從伺服器序號
'slave_no' => '',
// 是否嚴格檢查欄位是否存在
'fields_strict' => true,
// 是否需要斷線重連
'break_reconnect' => false,
// 監聽SQL
'trigger_sql' => env('app_debug', true),
// 開啟欄位快取
'fields_cache' => false,
// 欄位快取路徑
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
/**
* 管理員
*/
'admin' => [
// 資料庫型別
'type' => 'mysql',
// 伺服器地址
'hostname' => '127.0.0.1',
// 資料庫名
'database' => 'admin',
// 使用者名稱
'username' => 'root',
// 密碼
'password' => 'root',
// 埠
'hostport' => '3306',
// 資料庫連線引數
'params' => [],
// 資料庫編碼預設採用utf8
'charset' => 'utf8',
// 資料庫表字首
'prefix' => '',
// 資料庫部署方式:0 集中式(單一伺服器),1 分散式(主從伺服器)
'deploy' => 0,
// 資料庫讀寫是否分離 主從式有效
'rw_separate' => false,
// 讀寫分離後 主伺服器數量
'master_num' => 1,
// 指定從伺服器序號
'slave_no' => '',
// 是否嚴格檢查欄位是否存在
'fields_strict' => true,
// 是否需要斷線重連
'break_reconnect' => false,
// 監聽SQL
'trigger_sql' => env('app_debug', true),
// 開啟欄位快取
'fields_cache' => false,
// 欄位快取路徑
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
],
三、建立控制器
準備工作全部完成,接下來開始測試。
建立一個控制器 Database.php(隨便)
,用於顯示測試結果:
<?php
namespace app\controller;
// 使用門面類(Db)
use think\facade\Db;
class Database
{
/**
* 連線資料庫:user(essential_information表)
* @return Array
*/
public function user()
{
// 讀取user資料庫中essential_information表所有記錄
// @connect: 選擇資料庫
// @table:選擇該資料庫的表
$query = Db::connect('user') -> table('essential_information') -> select();
return json($query);
}
/**
* 連線資料庫:admin(administrator_information表)
* @return Array
*/
public function admin()
{
// 讀取admin資料庫中administrator_information表所有記錄
$query = Db::connect('admin') -> table('administrator_information') -> select();
return json($query);
}
}
本文章已修改原文用詞符合繁體字使用者習慣使其容易閱讀
版權宣告:此處為CSDN博主「王佳斌」的原創文章,依據CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_44198965/article/details/108266519