Php Laravel动态更改连接

Php Laravel动态更改连接,php,database,laravel,connection,Php,Database,Laravel,Connection,如何更改laravel的连接表单控制器,但连接信息存储在数据库中,如数据库管理器,我的示例: 我的数据库中有一个数据库信息: id, driver, database_name, username, password, host 因此,在我的控制器上,只需呼叫: $connection = Database::find( 1 ); $users = new Users(); $users->setConnection( [ 'driver' => $connection-&

如何更改laravel的连接表单控制器,但连接信息存储在数据库中,如数据库管理器,我的示例:

我的数据库中有一个数据库信息:

id, driver, database_name, username, password, host
因此,在我的控制器上,只需呼叫:

$connection = Database::find( 1 );
$users = new Users();
$users->setConnection( [
    'driver' => $connection->driver,
    'host' => $connection->host,
    'username' => $connection->username,
    'password' => $connection->password
] );
$users = $users->get();

我要在这里找个帮手。让我们在
app/Helpers/DatabaseConnection.php
中创建一个

namespace App\Helpers;
use Config;
use DB;

class DatabaseConnection
{
    public static function setConnection($params)
    {
        config(['database.connections.onthefly' => [
            'driver' => $params->driver,
            'host' => $params->host,
            'username' => $params->username,
            'password' => $params->password
        ]]);

        return DB::connection('onthefly');
    }
}
现在我们在控制器的某个地方尝试

use App\Helpers\DatabaseConnection;
... 

$params = Database::find( 1 );
$connection = DatabaseConnection::setConnection($params);
$users = $connection->select(...);
注意:未测试。我希望它能起作用,或者只是指导你

更多信息:

  • 使用多数据库:

  • 动态设置配置:


谢谢,EddyTheDove,我正在使用您的解决方案,这非常好:)我只是想知道如何选择表名

namespace App\Helpers;
use Config;
use DB;

class DatabaseConnection
{
    public static function setConnection($params)
    {
        config(['database.connections.onthefly' => [
            'driver' => $params->driver,
            'host' => $params->host,
            'username' => $params->username,
            'password' => $params->password
        ]]);

        return DB::connection('onthefly');
    }
}
现在我们在控制器的某个地方尝试

use App\Helpers\DatabaseConnection;
... 

$params = Database::find( 1 );
$connection = DatabaseConnection::setConnection($params);
$users = $connection->select(...);
使用App\Helpers\DatabaseConnection;


是的,这是工作,谢谢你,这是我正在寻找的。你如何选择表名?我想象没有这个你的解决方案的生活。干得好。谢谢救生员。