Laravel 动态更改连接
Laravel Change Connection Dynamically
如何更改 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,我正在使用你的解决方案,这很棒 :) 只是想知道如何 select table 我把这个命名
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');
}
}
现在我们在控制器的某个地方尝试
使用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();
如何更改 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,我正在使用你的解决方案,这很棒 :) 只是想知道如何 select table 我把这个命名
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');
}
}
现在我们在控制器的某个地方尝试
使用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();