2017-02-13 80 views
4

如何改變laravel的連接形式控制器,但存儲在諸如數據庫管理數據庫的連接信息,我的例子: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(); 

回答

3

我會去幫助這裏的。我們在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(...); 

注:未測試。我希望它的工作原理或只是引導你

更多信息:

+0

是的,這是工作:在飛行https://laravel.com/docs/5.3/database#read-and-write-connections

  • 設置配置,謝謝,這是我正在尋找的。 –

  • +0

    上的代碼需要加上:「public static function setConnection(....」 –