php - Laravel 动态更改连接

标签 php database laravel connection

如何更改 laravel 的连接形式 Controller ,但连接信息存储在数据库中,如数据库管理器,我的示例:

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

id, driver, database_name, username, password, host

所以在我的 Controller 上调用:

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

最佳答案

我这就去找个 helper 。让我们在 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');
    }
}

现在我们在 Controller 的某个地方尝试

use App\Helpers\DatabaseConnection;
... 

$params = Database::find( 1 );
$connection = DatabaseConnection::setConnection($params);
$users = $connection->select(...);

注意:未经测试。我希望它有效或只是指导你

更多信息:

关于php - Laravel 动态更改连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198046/

相关文章:

Laravel 5 : Best way to validate form with Javascript

php - Laravel 邮件不通过队列发送

php - 通过数据库修改用户密码

php - 如何在 PHP 中使用 curl?

database - 如何确定 BCNF

mysql - 需要洞察力 - 同步将在实时站点上使用的生产数据库的最佳实践是什么? CakePHP, Mysql

mysql - sql表行在其他几个表之一中有相应的行

php - 在数据库种子期间禁用 Laravel 电子邮件

php - 将 match_all 与过滤器一起使用

php - 生成唯一的 6 位代码