Laravel Change Connection Dynamically Laravel Change Connection Dynamically laravel laravel

Laravel Change Connection Dynamically


I will go for a helper here. Let's create one in 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');    }}

And now somewhere in controller we try

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

Note: Not tested. I hope it works or simply guide you

More info:


Thanks, EddyTheDove, I am using your solution which is great :) just to know how to select table name I am putting this

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');    }}

And now somewhere in controller we try

use App\Helpers\DatabaseConnection;...

    $params['connection_name'] = 'onthefly';    $params['dbname'] ='dbname';    $params['driver'] = 'mysql';    $params['host'] = 'localhost';    $params['username'] = 'root';    $params['password'] = '';    $params['port'] = 3306;$connection = DatabaseConnection::setConnection($params);$getTableData = $connection->table('table_name')->where("column_name",'=','matchCondition')->get();