FBi*_*idu 15
更新:这个答案是从2015年开始的!我多年没有使用过Laravel,而且我还没有及时了解最新的最佳实践.这个答案不断上升,所以我认为它有效,但请谨慎行事.
好吧,我对此的直接回答是:不要.您可以通过更改数据模型并使用更高级的关系来完成任务.在不知道你想做什么的情况下很难分辨,但在我看来,这似乎是一个坏主意,特别是如果你打算使用雄辩的模型等等
也就是说,在某些情况下,您确实需要更改另一个数据库中的数据或执行一些原始查询,您可以使用该DB::connection()方法.就像是:
$data = DB::connection('another_connection')->select(...);
您可以another_connection在database.php文件中指定该变量.像这样:
<?php
return array(
'default' => 'mysql',
'connections' => array(
    # Your regular connection
    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'database',
        'username'  => 'user',
        'password'  => 'password'
        'charset'   => 'utf8',
    ),
    # Your new connection
    'another_connection' => array(
        'driver'    => 'mysql',
        'host'      => 'another_host',
        'database'  => 'another_db',
        'username'  => 'user1',
        'password'  => 'password1'
        'charset'   => 'utf8',
    ),
),
);
您甚至可以为每个雄辩模型指定连接,protected $connection = 'another_connection';也可以为运行时创建/查询的每个模型实例指定连接
$user = new User;
$user->setConnection('another_connection');
$user1 = $user->find(1);
但话说回来,我个人认为这不是一个好主意,而且在我看来,随着应用程序的复杂性增加,一切都会变得混乱并迅速崩溃.
NiR*_*iRR 15
您可以在运行时使用更改连接详细信息
Config::set('database.connections.mysql.database', 'other_database');
但是在删除缓存之前不要忘记清除
DB::purge('mysql');
从 Laravel 5.x 或 6.x 开始,您可以像这样更改它
config(['database.default' => 'databasename']);
凡databasename在中指定config/database的在connections数组中。