0

I 2 Datenbanken definiert haben, zum BeispielYII2 Beziehungen in Modellen zwischen Tabellen aus 2 Erstellen von Datenbanken

return [ 
'components' => [ 
    'db1' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=localhost;dbname=db1name', 
     'username' => 'db1username', 
     'password' => 'db1password', 
    ], 
    'db2' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=localhost;dbname=db2name', 
     'username' => 'db2username', 
     'password' => 'db2password', 
    ], 
], 
]; 

Jetzt habe ich eine Tabelle als ‚Benutzer‘ in ‚DB1‘ und Tabelle ‚Länder‘ in ‚db2‘

users 
id , country_code , username , password 
1 , DE   , xyz  , 12345 
2 , FR   , abc  , 12345 

countries 
code , name 
DE , Germany 
FR , France 
IN , India 

ich habe die Fremdschlüsselbeziehung zwischen users.country_code & countries.code definiert

AUSGABE

Aber wenn ich versuche, das Modell für 'Benutzer' Tabelle mit gii erstellen, gibt es einen Fehler, möglicherweise weil die Tabellen Beziehung aus 2 verschiedenen Datenbanken sind. Verwendung von Tabellen aus verschiedenen Datenbanken in Relationen eines Modells.

Alle Vorschläge sind

begrüßt
+0

Ich denke gii die Datenbankverbindung verwendet, die in 'db' gespeichert ist. So erzeugt es einen Fehler (wie [dies] (http://stackoverflow.com/questions/31915469/multiple-database-connection-yii2-not-working)). – robsch

+1

[This] (http://stackoverflow.com/a/27254893/57091) könnte helfen. Sie sollten [getDb()] (http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html#getDb%28%29-detail) in Ihren Modellklassen überschreiben. – robsch

+0

Hi robsch, ich habe bereits die Links überprüft, die Sie zur Verfügung gestellt haben, aber wenn Sie mir wissen lassen, wie man eine Join - Anweisung erstellt, wenn mehrere DBs betroffen sind, ist das für Tabellen in einer einzelnen db - 'Joinrel' => Array (self :: BELONGS_TO, 'User', 'code'), – nshah143

Antwort

-1

Versuchen Sie dieses

SELECT `users`.* FROM `users` LEFT JOIN `db2name`.`countries` ON `users`.`country_code` = `db2name`.`countries`.`code ` 
+0

Er fragt, wie man das Modell erstellt und Sie ihm sagen, wie man die Daten abfragt. – nicolascolman

Verwandte Themen