Par*_*oni 18 laravel eloquent codeception
对于几个控制台命令,我需要更改数据库,以便所有我的雄辩命令和查询在正确的数据库(和服务器)上运行.
我见过几个解决方案,最简单的似乎是改变配置如下:
$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,因此可以省略它.