如何在laravel 5.5中连接多个数据库?

时间:2019-10-09 05:28:58

标签: php mysql database laravel-5

我正在使用Laravel 5.5和MySQL,并且我想连接到多个数据库。我阅读了许多文章,其中大多数文章建议先设置config/database.php,然后在控制器中使用以下代码连接数据库:

  

$ result = DB :: connection('mysql2')-> select($);

它对我有用,但是我有多个数据库,并且已将主机和端口保存在主数据库中。

是否可以从数据库本身查询数据库列表和连接信息,然后将其放入config/database.php

还是我应该手动添加数据库列表和连接信息?

2 个答案:

答案 0 :(得分:0)

我认为您可以参考此How to make database query inside a config file? 您可以在其中查询数据库并将其放在您的配置文件中。

答案 1 :(得分:0)

我找到了解决方案。分享给大家:)

首先,建立一个Connection模型。

然后,在app/Providers/AppServiceProvider.php

中添加代码
//connections
if (\Schema::hasTable('connections')) {
        $connections = \App\Models\Connection::all();
        $db = \Config::get('database.connections');
        foreach ($connections as $connection)
        {
            $db['cdb_'.$connection->id] = [
                    'driver'    => 'mysql',
                    'host'      => $connection->db_host,
                    'port'      => $connection->db_port,
                    'database'  => $connection->db_database,
                    'username'  => $connection->db_user,
                    'password'  => $connection->db_pass,
                    'charset'   => 'utf8',
                    'collation' => 'utf8_unicode_ci', //utf8_unicode_ci
                    'prefix'    => '',
                    'strict'    => false,
        ];
    }
    \Config::set('database.connections',$db);
}else{
    \Config::set('database.connections',[]);
}

Schema::defaultStringLength(191);