auf einem Modul habe ich eine Komponente namens db hinzufügen, wo ich, wie die Haupt-Yii-Komponente, die Daten für die Datenbankverbindung, brauche ich in meinem Modul jedes Mal die Datenbank in seiner Konfiguration für alle Modelle und nicht die Hauptdatenbankverbindung angegeben Wie kann ich das machen?Wie kann ich ein yii2-Modul zwingen, eine bestimmte Verbindung für alle seine Modelle zu verwenden?
Q
Wie kann ich ein yii2-Modul zwingen, eine bestimmte Verbindung für alle seine Modelle zu verwenden?
1
A
Antwort
1
Sie haben mehrere Möglichkeiten, z. Verwendung einer getrennten Konfiguration in app/config/main.php zB eine spezifische dbMyMod zu Komponente Config
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',
],
],
oder eine Art und Weise, die nicht in einer statischen Konfiguration erfordern app/confing
Zugabe auf eine basieren könnte Modul-Funktion, die eine richtige DB-Verbindung
public function myModuleDbCon()
{
$myDbCon = new yii\db\Connection([
'dsn' => 'mysql:host=localhost;dbname=example',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
]);
return myDbConn;
}
dann in Ihrer Rückkehr Modul das Modul DB-Verbindung
retrive können 210.
$command = $aDbConn->createCommand('SELECT * FROM myTable');
$result= $command->queryAll();
Verwandte Themen
- 1. Wie kann ich zwingen, alle Modelle von Rails zu laden?
- 2. Wie verwende ich immer eine bestimmte DB-Verbindung für bestimmte Django-Modelle?
- 3. Kann ich Swift-Code zwingen, alle Kerne zu verwenden?
- 4. RxJava/Retrofit - Wie kann ich Benutzer zwingen, eine bestimmte Unterklasse von Abonnenten zu verwenden?
- 5. NSLocalizedString zwingen, mit Swift eine bestimmte Sprache zu verwenden
- 6. Wie kann ich csc/mcs zwingen, eine bestimmte Version einer Assemblyreferenz zu verwenden?
- 7. Wie kann ich Eclipse zwingen, Sun Java zu verwenden?
- 8. Wie kann ich Firebase Realtime Database zwingen, WebSockets zu verwenden?
- 9. Wie kann ich ein Element und alle seine unbekannten Geschwister
- 10. Wie kann ich okhttp zwingen, http/2 für eine Anfrage zu verwenden?
- 11. Wie kann ich Xcode zwingen, einen benutzerdefinierten Compiler zu verwenden?
- 12. pip installieren: Wie eine bestimmte Paketversion zwingen
- 13. Kann ich alle Codeanalyse-Nachrichten für eine bestimmte Klasse unterdrücken?
- 14. Wie kann ich eine Android-App zwingen, nur ein bestimmtes Konto zu verwenden, um Google Drive API (GDAA) zu verwenden?
- 15. Wie Boost zu zwingen, rpath zu verwenden?
- 16. Wie kann ich Python zwingen, das Modul dummdbm zu verwenden, um eine neue Datenbank zu erstellen?
- 17. Wie kann ich verschiedene Zertifikate für bestimmte Verbindungen verwenden?
- 18. Wie kann ich eine implementierte Klasse zwingen, eine Entität mit einem bestimmten Parameter zu verwenden?
- 19. Kann ich Python-Array-Elemente zwingen, eine bestimmte Größe zu haben?
- 20. Wie kann ich einen TD ohne Inhalt zwingen, seine Grenze zu rendern?
- 21. Wie Dapper dot net zwingen, seine Umsetzung von IDbCommand.ExecuteReader
- 22. Kann ich SignalR zwingen, die gleiche 5-Tuple-Verbindung während des Handshaking zu verwenden?
- 23. Wie kann ich Tor zwingen, eine neue Identität zu verwenden, ohne Vidalia zu benutzen?
- 24. Kann ich AWS CLI zwingen, UTF-Codierung zu verwenden?
- 25. WPF - wie ein Befehl zu zwingen, neu zu bewerten ‚CanExecute‘ über seine Commandbindings
- 26. Kann ich in Tensorflow tf.gather() für eine teilweise Verbindung verwenden?
- 27. Wie kann ich distinct nur für bestimmte Tabellenvariablen verwenden?
- 28. Wie kann ich eine Verbindung herstellen und Informationen für eine bestimmte Verfügbarkeitszone erhalten?
- 29. Kann ich Visual Studio zwingen, Mingw Compiler zu verwenden
- 30. Gibt es eine Möglichkeit, Hibernate zu zwingen, neue Verbindung für nächste Transaktion innerhalb einer Spring-Anwendung zu verwenden?
Dank, ist der zweite Weg besser für meinen Zweck, nur eine Frage mehr: nachdem einige über mein Problem googeln ich das Modell 'getDb()' Funktion (bezogen auf diese Frage [link zu hinterfragen] gefunden (https : //stackoverflow.com/questions/27254540/multiple-database-connections-and-yii-2-0)), aber wenn ich eine db-Komponente in der Modulkonfiguration eingestellt habe, wie ich von einem Modell auf diese Komponente zugreifen kann, mehr Generisch in einem Modell eines Moduls Wie kann ich auf die Modulinstanz zugreifen? Wenn ich den Namen des Moduls in der Konfiguration verwende, muss der Name immer den gleichen Namen haben (das Modul, das auf mehreren Seiten geteilt werden soll) – MarBer
Sie können auf ein Komponet mit 'Yii :: $ app-> your_compenent_name' .. und zugreifen Sie können auf den Parameter als Schlüssel - Wert - Array zugreifen (oder als Objekt .. ich erinnere mich nicht jetzt)) .. aber praktisch ist das gleiche wie in myModuleDbCon .. ändern Sie einfach die Stelle, wo Sie den Parameter zuweisen. – scaisEdge