0
我不知道這聽起來很愚蠢或重複的問題。但我試圖移動到我的項目中的多個數據庫。每個公司應該有一個特定的數據庫。每個公司應該有不同類型的用戶(我的意思是具有不同角色的用戶)。所有數據庫具有相同的結構但數據不同。這可能跳轉到另一個數據庫?如果是,如何?yii2多個數據庫認證
我不知道這聽起來很愚蠢或重複的問題。但我試圖移動到我的項目中的多個數據庫。每個公司應該有一個特定的數據庫。每個公司應該有不同類型的用戶(我的意思是具有不同角色的用戶)。所有數據庫具有相同的結構但數據不同。這可能跳轉到另一個數據庫?如果是,如何?yii2多個數據庫認證
是可能的幾種方式
的方式是根據不同分貝componente聲明中你confing
return [
'components' => [
'db_default' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydb_default',
'username' => 'my_username_default',
'password' => 'my_password_default',
],
'db1' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydb1',
'username' => 'my_username1',
'password' => 'my_password1',
],
'db2' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydb2',
'username' => 'my_username2',
'password' => 'my_password2',
],
....
],
];
,那麼你可以擴展你所有的類重新定義getDb功能
class Customer extends ActiveRecord
{
// ...
public static function getDb()
{
// you could check some application condition for get the db you need
// use the "db2" application component
switch ($my_condition) {
case 'condition_1':
return \Yii::$app->db1;
break;
case 'condition_2':
return \Yii::$app->db2;
break;
default:
return \Yii::$app->db_default;
break;
}
}
}
另一方式是創建連接到db的連接
if (isset(Yii::$app->db)){
Yii::$app->db->close()
}
Yii::$app->db= \yii\db\Connection([
// dsn user and password are from session, set these value during login procedure
'dsn' => 'mysql:host=localhost;dbname=your_act_dbname',
'username' => 'your_act_username',
'password' => 'your_act_password,
]);
$models = Yii::$app->db->createCommand('SELECT * FROM your_table')
->queryAll();
在$的模型,你應該從連接 分配數據庫中選擇表的所有車型,您可以檢查$模型的內容如:使用的var_dump($機型)
如何動態地更改連接? ? – Sherzod
對我有一點幫助的人。描述如何動態改變? – Sherzod
當你需要連接另一個數據庫時,你可以關閉()打開連接並創建一個新的連接。http://www.yiiframework.com/doc-2.0/yii-db-connection.html http:// www。 yiiframework.com/doc-2.0/guide-db-dao.html – scaisEdge