Laravel配置控制器內切換多個數據庫(或任意切換多資料庫)
1. 知識點:
Laravel預設資料庫是取.env和datebase.php中mysql填寫的資料庫。
如果需要切換多個數據庫,就需要填寫新的資料庫配置。
新的資料庫不需要.env檔案依賴。
如果需要.env,則請在.env設定。
2. 具體配置與說明:
1). config/datebase.php中配置方法和效果如下:
'mysql' => [ // 預設,需要讀取.env中資料庫的配置,有env 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), 'port' => env('DB_PORT', '3306'), 'database' => env('DB_DATABASE', 'wxma'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => 'wx_', 'strict' => true, 'engine' => null, ], 'mysql_test' => [ // 新增的資料庫,沒有env 'driver' => 'mysql', 'host' => '127.0.0.1', 'port' => '3306', 'database' => 'bless3', 'username' => 'root', 'password' => '', 'unix_socket' => '', 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => 't_', 'strict' => true, 'engine' => null, ],
注意:新的資料庫不依賴.env,因此不需要填寫。
2). 控制器中讀取出資料庫:
預設讀取資料庫 DB::table('wx_account')
讀取新增資料庫 DB::connection("mysql_test")->table("blesslist")
在你的控制器中:
use Illuminate\Support\Facades\DB;
// 測試同時多資料庫連線函式
public function db_test(){ $mysql = DB::table('wx_account')->select("id", "wx_login", "fans_property")->get(); // 預設資料庫 $mysql_test = DB::connection("mysql_test")->table("blesslist")->get(); // 新建資料庫 $back = [ "mysql"=>$mysql, "mysql_test"=> $mysql_test, ]; return json_encode($back, JSON_UNESCAPED_UNICODE); }
3. 成功輸出兩個資料庫中的內容!
--注意---------------------------
需要env的話,需要在env提前宣告:
DB_CONNECTION=mysql_test
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=name
DB_USERNAME=root
DB_PASSWORD=
然後:
'mysql_test' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'name'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => 'wx_',
'strict' => true,
'engine' => null,
],
即可以了。沒試過,但是應該可以。