2011-10-24 9 views
2

私は開発中のマルチテナントアプリケーションを持っており、私はほぼそこにいます。各データベースは決して変わらないテーブルの多くは、... [「HTTP_HOST」] $ _SERVERをもとに応じて、その都度ネーミングをコピーCodeigniterデータベース - 自動選択

を、およびそれを含んで -

現在、私は、顧客ごとに1つのデータベースを使用しています情報。

私は、この情報を含むメインアプリケーションデータベースを持っています。これには、クライアントのリストとそのデータベースの名前が含まれます。このデータベースは正しいカスタマーデータベースを選択するために使用されます...

これは可能なのですか?誰かが適切なチュートリアルの方向に私を指摘できますか?

おかげ

答えて

1

OK、あなたは「管理」データベースと「顧客」のデータベースのための異なるデータベースのconfigsが必要になりますので。

それらの個別のコンフィグを生成するには、このページからの例を使用します。

http://ellislab.com/codeigniter/user_guide/database/configuration.html

を次に、あなたのメインコントローラ(あなたがMY_Controller.phpを拡張し、ちょうどCI_Controller.phpを使用していない私に教えてください)で、あなたの」あなたの '管理者'データベースを読んで、すべてのクライアント情報を取得したいと思うでしょう。あなたは、このクライアント・データベース用$config配列を生成し、新しい$config配列でデータベースを再ロードすることをお勧めします:

// in MY_Controller constructor 

// do your thing here to connect to the admin database and get client details 
// ... 
// 

$config['hostname'] = "localhost"; 
$config['username'] = $client_db_username; // you got this from the 'admin' database 
$config['password'] = $client_db_password; // you got this from the 'admin' database 
$config['database'] = $client_db_name; // you got this from the 'admin' database 
$config['dbdriver'] = "mysql"; 
$config['dbprefix'] = ""; 
$config['pconnect'] = FALSE; 
$config['db_debug'] = TRUE; 
$config['cache_on'] = FALSE; 
$config['cachedir'] = ""; 
$config['char_set'] = "utf8"; 
$config['dbcollat'] = "utf8_general_ci"; 

$this->load->database($config); 

あなたは、クライアントのデータベースへの接続を持っています。

あなたが前後に両方のデータベースに接続する必要があります場合は、このページで説明したように、あなたは複数のデータベースに接続できます。http://ellislab.com/codeigniter/user_guide/database/connecting.html

+0

パーフェクト、私はちょうどあなたの答えを読んできたし、すべてのリンクは内に含まれています。これはちょうど私が必要としていたものです... –

関連する問題