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,
],
即可以了。没试过,但是应该可以。