假设我在app / config / database.php中有以下数据库设置
'default' => 'mysql',
'connections' => array(
# Our primary database connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
# Our secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
),
从laravel的官方指南中,有几种方法可以选择使用哪种连接设置。我需要建立连接时设置它,
$users = DB::connection('mysql2')->select(...);
或在模型中设置:
class SomeModel extends Eloquent {
protected $connection = 'mysql2';
}
就我而言,我为不同的用户提供了具有相同模式的重复数据库,因此无法在模型中进行设置。有没有办法在同一个函数下为所有连接选择连接设置,以便我可以将它放在filter / baseController中并在运行时设置连接?
答案 0 :(得分:2)
一种选择是更新'database.default'键并重新连接:
Config::set('database.default', 'mysql2');
DB::reconnect();
答案 1 :(得分:0)
这是第三个解决方案(最后一个):http://fideloper.com/laravel-multiple-database-connections
因此,您可以将连接名称传递给函数或将其设置在控制器中。
答案 2 :(得分:0)
您可以将默认连接更改为' mysql2'就这样做。
DB::setDefaultConnection('mysql2');