2017-07-19 73 views

回答

1

你有幾種方式,例如。使用的應用程序分離的構造/配置/ main.php 例如添加特定dbMyMod組分配置

return [ 
// ... 
'components' => [ 
    // ... 
    'db' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=localhost;dbname=example', 
     'username' => 'root', 
     'password' => '', 
     'charset' => 'utf8', 
    ], 
    'dbMyMod ' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=hostForMudle;dbname=module_db_name', 
     'username' => 'user_module_name', 
     'password' => 'password', 
     'charset' => 'utf8', 
    ], 

], 

,或者不需要在應用程序的靜態配置單程/ confing

可以基於一個模塊函數返回一個適當的數據庫連接

public function myModuleDbCon() 
{ 
    $myDbCon = new yii\db\Connection([ 
      'dsn' => 'mysql:host=localhost;dbname=example', 
      'username' => 'root', 
      'password' => '', 
      'charset' => 'utf8', 
    ]); 
    return myDbConn; 

} 

然後在你模塊,您可以retrive模塊數據庫連接

aDbConn = Yii::$app->getModule('my_module_name')->myModuleClass->myModuleDbCon(); 

$command = $aDbConn->createCommand('SELECT * FROM myTable'); 
$result= $command->queryAll(); 
+0

感謝,第二種方式是我的目的,更好的,只有一個問題多:一些谷歌上搜索我的問題後,我發現模型'getDb()'函數(在這個問題[鏈接質疑(HTTPS相關://stackoverflow.com/questions/27254540/multiple-database-connections-and-yii-2-0)),但是如果我已經在模塊配置中設置了一個db組件,我如何從模型中訪問這個組件,更多在模塊的模型中泛型如何訪問模塊實例?如果我在配置中使用模塊的名稱,名稱必須始終是相同的名稱(在多個站點上共享的模塊) – MarBer

+0

您可以使用'Yii :: $ app-> your_compenent_name'訪問組件。你可以訪問param作爲鍵值數組(或作爲一個obbject ..我不記得了))..但實際上是一樣的是在myModuleDbCon ..只是改變你分配參數的地方.. – scaisEdge

相關問題