私は動的に別のデータベースに移動しようとしています。 dbファイルを変更するいくつかの質問がありましたが、次のデータベースからいくつかの情報が得られました。しかし、私が必要とするのは完全に2番目のデータベースに移動することです。私はこれをどのようにするべきですか?私はこれを達成するためにdsn(db.phpファイル内)を変更する必要があることを見てきました。しかし、私はそれを変更し、それはまだ変更されていない??最初のデータベースを閉じる2番目のデータベースに完全にアクセスする必要があります。yii2データベースを動的に変更する
2
A
答えて
4
db.php
のような設定は、処理中(PHPの処理中)に変更することを意図していません。要求がフレームワークに入力されると、それらは初期化で一度ロードされます。 別の方法として、あなたはdb.php
に予め二DBを構成することができ、かつ動的などのそれらの間の変更:あなたがしたい場合
Yii::$app->db // your default Database
と
Yii::$app->db2 // Second configured Database, to which you can switch dynamically later
あなたは、だから、およそmultiple database connections here
を学ぶことができますActiveRecord(例:User)は2つのデータベースにアクセスできるようにするために、どのDBから読み書きするかを指定する静的変数を定義できます。たとえば:
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");
}
}
//...
そしてコントローラーでそれを使用したいと:
User::setDb(User::DB_DATABASE1);
$usersDB1 = User::find()->all();
User::setDb(User::DB_DATABASE2);
$usersDB2 = User::find()->all();
関連する問題
- 1. サーバーデータベースの変更後に自動的にyii2グリッドを更新する
- 2. Yii2コントローラに基づいてアクティブなデータベースを変更する
- 3. Djangoでデータベースを動的に変更するには?
- 4. 新しいFirebase:データベースURLを動的に変更する
- 5. TSQL + C#:使用中のデータベースを動的に変更する
- 6. spring boot動的にデータベースを変更する
- 7. Yii2 - ヘッダーコレクションを変更する
- 8. Yii2レンダリングウィジェットを動的に
- 9. Yii2のデフォルトテンプレートを変更するには?
- 10. Yii2のユーザーを変更するには
- 11. データベースサーバー上のmysqlデータベースの変更を自動的に更新する方法は?
- 12. データベースが変更された場合、内容を自動的に更新する
- 13. Codeigniterが未定義のデータベースに動的に変更します
- 14. データベースのセル値を変更します。 Yii2
- 15. Laravelでデータベース接続を動的に変更
- 16. 動的にエンティティプロパティを動的に変更する方法
- 17. データベースに動的に変更するdivの内容を送信します
- 18. uitableviewフッターを動的に変更する
- 19. CSSを動的に変更する
- 20. java3d SceneGraphを動的に変更する
- 21. filterToolbarオプションを動的に変更する
- 22. 動的にonclickメソッドを変更する
- 23. Umbracoページテンプレートを動的に変更する
- 24. Polymer:動的にスタイルシートを変更する
- 25. 動的にQuillプレースホルダーを変更する
- 26. 動的にテキストを変更するqlabel
- 27. GridViewテンプレートフィールドを動的に変更する
- 28. JWTサブジェクトフィールドを動的に変更する
- 29. row_formatを動的に変更する
- 30. スロットルパラメータを動的に変更する
が、私はこのアプローチに同意し、あなたが事前に設定デシベルのコンフィグを設定する必要がありますが、技術的にはあなたが動的に任意のコンポーネントの設定を変更することができること - あなたがそれを正しく行なわなければ、そのコンポーネントに依存しているものを混乱させるリスクを冒すだけです。私は、あなたが事前に代替のdb仕様を知らないかもしれない場合のためにこれを主に言及します。 – ldg