对于几个控制台命令,我需要更改数据库,以便所有有效的命令和查询都在正确的数据库(和服务器)上运行。
香港专业教育学院见过一些解决方案,最简单的似乎是这样更改配置:
$new_connection = [
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'test_db',
'username' => 'test',
'password' => 'test',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
'strict' => false
];
config(['database.connections.mysql' => $new_connection]);
DB::purge('mysql');
唯一的问题(我注意到)是当我尝试进行交易时,更具体地说,当我在Codeception的验收测试中进行交易时-它们根本无法工作。
我使用的命令是:
DB::connection()->beginTransaction(); // inside the _before function
和
DB::connection()->rollBack(); // inside the _after function
最佳答案
您必须创建2个不同的连接
http://fideloper.com/laravel-multiple-database-connections
https://laravel.com/docs/5.1/database#accessing-connections
return array(
'default' => 'mysql',
'connections' => array(
# Our primary database connection
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'test_db',
'username' => 'test',
'password' => 'test',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
'strict' => false
),
# Our secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'database' => 'test_db_2',
'username' => 'test',
'password' => 'test',
'charset' => 'utf8',
'collation' => 'utf8_general_ci',
'prefix' => '',
'strict' => false
),
),
);
现在,当您要查询时,您必须通过所需的连接
$users = DB::connection('mysql2')->select(...);
由于默认的声明为mysql,因此可以省略。
关于laravel - 动态切换数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886491/