0

私は 20 の Web サイトに取り組んでおり、それぞれに独自のデータベースがありますが、データベースの構造は同じです。

問題は、それぞれのバックエンドで何らかの作業を行うために、異なるバックエンドにログインする必要があることです。

そこで、すべての Web サイトに対して単一の CI バックエンドを作成することにしました。

そのために、2 つのテーブル ( userwebsites)を持つデータベースを作成しました。

userはログイン アクション用です。

websitesテーブルには、すべての Web サイトと関連するデータベースが一覧表示されます。

私がやりたいことは、バックエンド アプリケーションの任意のビューで、データベース (または Web サイト) を選択できるようにすることです。これにより、選択したデータベースからのデータを現在のビューに再読み込みして、いくつかの作業を実行してから送信することができます。それ。

CI V1.7.2 を使用しています

4

1 に答える 1

1

これは非常にもっともらしいようです。ただし、データベース アダプターを変更すると、最初に言及したデータベースに保存されるため、データベース セッション ストレージは期待どおりに機能しないことに注意してください。

したがって、ユーザーを確認してデータベースの DSN (データベース ソース名) を取得したら、次のようにして、クエリを実行するときにデータベース アダプターを変更できます。

$this->database->load('dbdriver://username:password@hostname/database');

dbdriverは使用しているデータベースのタイプであることに注意してください。タイプについては構成ファイルを参照してください。詳細については、ドキュメントを参照することもできます。

データベース セッション ストレージを機能させたい場合は、新しいデータベース アダプターを作成することをお勧めします。方法は上記と似ていますが、もう 1 つのパラメーターがあります。

$new_db = $this->database->load($dsn, TRUE);

ただし、この方法では、 のようなクエリを実行することに慣れているため、コードのリファクタリングが必要になる可能性が高く、$this->database->query();に変更する必要があります$new_db->query()

于 2012-11-02T12:26:42.827 に答える