Ich versuche, dynamisch in eine andere Datenbank zu verschieben. Ich habe mehrere Fragen gesehen, die zeigten, dass sich db-Dateien von einem zum anderen ändern und sie nur einige Informationen von der nächsten Datenbank bekommen. Aber was ich brauche, ist komplett in die zweite Datenbank zu bewegen. Wie soll ich das machen? Ich habe gesehen, dass, um dies zu erreichen, dsn (in db.php-Datei) geändert werden sollte. Aber ich habe es geändert und es ist immer noch nicht verändert ?? Ich sollte vollständigen Zugang zu der zweiten Datenbank haben, die zuerst schließt. Gib mir einen Rat bitteyii2 Datenbank dynamisch ändern
2
A
Antwort
4
Configs wie db.php
sind nicht dazu bestimmt, im Prozess (während PHP verarbeitet wird) geändert werden. Sie werden einmal bei der Initialisierung geladen, wenn die Anfrage in das Framework eingegeben wird. Als Alternative können Sie zweite DB vorher in db.php
, konfigurieren und wie zwischen ihnen dynamisch ändern:
Yii::$app->db // your default Database
kann
und
Yii::$app->db2 // Second configured Database, to which you can switch dynamically later
Sie lernen multiple database connections here
, Also, wenn Sie wollen ActiveRecord (z. B. Benutzer) Um auf zwei Datenbanken zugreifen zu können, können Sie eine statische Variable definieren, die angibt, von welcher DB gelesen/geschrieben werden soll. Zum Beispiel:
class User extends \yii\db\ActiveRecord
{
const DB_DATABASE1 = 'db1';
const DB_DATABASE2 = 'db2';
private static $db = self::DB_DATABASE1;
public static function setDb($db)
{
self::$db = $db;
}
public static function getDb()
{
switch (self::$db) {
case self::DB_DATABASE1:
return Yii::$app->db;
case self::DB_DATABASE2:
return Yii::$app->db2;
default:
throw new \Exception("Database is not selected");
}
}
//...
Und es dann in den Controller wie:
User::setDb(User::DB_DATABASE1);
$usersDB1 = User::find()->all();
User::setDb(User::DB_DATABASE2);
$usersDB2 = User::find()->all();
Verwandte Themen
- 1. Spring Boot dynamisch Datenbank ändern
- 2. Yii2 ändern aktive Datenbank basierend auf Controller
- 3. Yii2 Render-Widget dynamisch
- 4. Yii2 dynamisch hinzufügen joinWith
- 5. Yii2 Standardbenutzer dynamisch machen
- 6. Yii2 + Redis als Datenbank
- 7. Yii2 dynamisch Klasse von Name
- 8. Yii2 Seitenumbruch Stil ändern
- 9. Yii2 - Sprache ändern
- 10. Dynamisch Show View in yii2 Fortschritt
- 11. yii2 Query-Datenbank Rückgabe Integer
- 12. yii2 in die Datenbank einfügen
- 13. dotless Parameter dynamisch ändern
- 14. JComboBox dynamisch ändern
- 15. TinyMCE-Konfiguration dynamisch ändern
- 16. Yii2 - Ändern der jQuery-Version
- 17. Yii2 - Passwort ändern Benutzer nachAnmeldung
- 18. Dynamisch ändern Repeater Datenelement
- 19. yii2 modales Attribut wie dynamisch benötigt
- 20. Dynamisch ändern Sie die Farbe von div nach Datenbank
- 21. C#, wie Objektattribute ändern dynamisch
- 22. Django Switch-Datenbank dynamisch
- 23. symfony ajax form dynamisch ändern
- 24. Ändern ActionBar Hintergrundfarbe Dynamisch
- 25. Three.js ändern Lichtintensität dynamisch
- 26. Linkurious dynamisch settlings ändern
- 27. Ionic2 Ansicht dynamisch ändern
- 28. Android dynamisch ändern Layoutgröße
- 29. CF7 Dynamisch Formulardaten ändern
- 30. Quill Platzhalter dynamisch ändern
ich mit diesem Ansatz einverstanden sind und dass Sie sollten vorkonfigurierte db configs eingerichtet, aber technisch könnte Sie eine Komponente config dynamisch ändern - Sie laufen einfach Gefahr, Dinge zu vermasseln, die ansonsten von dieser Komponente abhängen, wenn Sie es nicht richtig machen. Ich erwähne das meistens für den Fall, dass Sie die alternativen db specs im Voraus nicht kennen. – ldg