2017-06-03 1 views
0

Ich weiß nicht, ob es sich dumm oder doppelte Frage klingt. Aber ich versuche, in meinem Projekt zu mehreren Datenbanken zu wechseln. Jedes Unternehmen sollte eine bestimmte Datenbank haben. Und jedes Unternehmen sollte unterschiedliche Arten von Benutzern haben (ich meine Benutzer, die unterschiedliche Rollen haben). Alle Datenbanken haben dieselbe Struktur, aber unterschiedliche Daten. Ist es möglich, zu einer anderen Datenbank zu springen? Wenn es ist, wie?yii2 mehrere Datenbank-Authentifizierung

Antwort

1

möglich mehrere Möglichkeiten

eine Möglichkeit, auf verschiedenen db componente Erklärung basiert in Ihnen 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', 
      ], 
      .... 


     ], 
    ]; 

dann können Sie alle Ihre Klasse erweitern Neudefinition der getDb Funktion

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; 
      } 

     } 
    } 

ein anderes Weg ist die Verbindung zu db dynamisch

erstellen

In $ Modelle sollten Sie alle Modelle der Tabelle, aus der in Verbindung zugewiesen Datenbank ausgewählt haben Sie den Inhalt von $ Modelle zB überprüfen können: mit var_dump ($ Modelle)

+0

Wie Verbindung dynamisch ändern ?? ? – Sherzod

+0

Tun Sie mir einen kleinen Gefallen Mann. Beschreibe, wie man sich dynamisch ändert ?? – Sherzod

+0

Wenn Sie eine andere Datenbank verbinden müssen, können Sie die offene Verbindung schließen und eine neue erstellen .. http://www.yiiframework.com/doc-2.0/yii-db-connection.html http: // www. yiiframework.com/doc-2.0/guide-db-dao.html – scaisEdge