我正在使用Laravel 5.5和MySQL,并且我想连接到多个数据库。我阅读了许多文章,其中大多数文章建议先设置
,然后在控制器中使用以下代码连接数据库:config/database.php
$ result = DB :: connection('mysql2')-> select($);
它对我有用,但是我有多个数据库,并且已将主机和端口保存在主数据库中。
是否可以从数据库本身查询数据库列表和连接信息,然后将其放入config/database.php
还是我应该手动添加数据库列表和连接信息?
答案 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);