2016-08-19 13 views
1

私は少し問題があります。私はPDOラッパーを書いて、自分のデータベースでクエリを実行できるようにしました。単一のPDOインスタンスで複数のデータベースを処理する方法は?

私のアプリケーションはマルチテナントです。つまり、別のデータベースが必要です。

(1) Main Db 

(n) Tenant DB 

だから私は、私はすべての私の会社をしたメインデータベースをしました、そしてnは私が資格情報とユーザ企業の情報をログインしましデータベース:データソースの構造は、このように構成されています。

私のアプリケーションは、私はそうのような私のDBラッパー呼び出し開始:

$this->db = new Database('host', 'name', 'user', 'pass'); 

whisが私index.phpで私のデフォルトの設定でインスタンスを作成します。私のユーザーがログインすると、彼のデータベースの接続設定がグローバル変数に格納されます。

問題は、私のconfig.phpデータベース認証情報を使用する必要があるためです。そのため、各モデルメソッドでデータベースオブジェクトを何度も再宣言する必要があります。このシナリオは痛みです。

私はこれを解決するために何ができますか?

+2

さまざまなdbsがすべてシステムDBサーバにあり、SAMEユーザ/パスを使用してそれらにアクセス権を与えることができる場合は、 'select dbname.tablename.field、otherdb.othertable.otherfield from dbname.table ...タイプのもの。しかし、それらが異なったdbs(例えばmysqlとpostgres)で、そして/またはあなたがそれぞれ異なる資格を使用する必要があるならば、2つの+ pdoオブジェクトを持たなければなりません。 –

+0

素晴らしいソリューションですが、私は別のサーバーファームを持っていますか? – user3287550

答えて

2

MySQLユーザーは、両方のデータベースへのアクセス権を持っている、そしてちょうどテーブル名にデータベース名を付加した場合:

SELECT id,name FROM database_name.users_table 

別のユーザーとしてログインする必要がある場合は、[はい、あなたが必要となります新しいPDOインスタンスを作成します。

関連する問題