Change Laravel connection dynamically

How to change the laravel form configurator, but the connection information stored in the database, such as the database manager, is my example:

I have a database in my database:

id, driver, database_name, username, password, host

so on my controller it just gets called:

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

I will go for an assistant here. Let me create it 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 the controller we will try

use App\Helpers\DatabaseConnection;
... 

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

Note. Not verified. I hope this works or just helps you

Additional Information:

+4

Source: https://habr.com/ru/post/1669554/


All Articles