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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值