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. 成功输出两个数据库中的内容!

Laravel配置控制器内切换多个数据库(或任意切换多数据库)_第1张图片

--注意---------------------------

需要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,
],

即可以了。没试过,但是应该可以。

你可能感兴趣的:(Laravel配置控制器内切换多个数据库(或任意切换多数据库))