私のプロジェクトはマルチテナントSaaSに基づいています。
私には複数のクライアント(会社)があり、各クライアントには複数のユーザーがいます-それらはすべて同じデータベースレイアウトを使用します。
各クライアントには独自のデータベースがあるため、ユーザー認証中に、ユーザーをそのユーザーの会社のデータベースに関連付けるマスターデータベースを構築したいと思います。
各データベースの構造は同じです...データのみが異なります。
異なる会社の異なるデータベースを保持できるように、データベース内のデータが混ざり合うことはありません。
アプリケーションの作成時には、クライアントの数(およびそのためのデータベースの数)は不明であるため、ブートストラップスクリプトにすべての接続を含めることはできません。
さて、私がやりたいのは、ブートストラップにあるDB接続を動的に変更するか、ユーザーがサインインするための新しい接続を動的に作成する機能を持つことです。Yiiでこれを解決する簡単な解決策はありますか?それでもAR、クエリを使用しますビルダー?
私はこの解決策を見ましたが、私にはうまくいきませんでしたhttp://www.yiiframework.com/forum/index.php?/topic/5385-dynamic-db-connection/
これは、私の構成ファイルが1つのデータベースを実行しているスクリプトを今日どのように検索するかです。ユーザーが属し、アプリがYiiで使用するデータベースを制御するマスターデータベースを呼び出したいのですが、何か考えはありますか?
<? php
$language = 'en';
$currencyBaseCode = 'USD';
$theme = 'default';
$connectionString = 'mysql:host=localhost;port=3306;dbname=master';
$username = 'root';
$password = 'YOUR PASS';
$memcacheServers = array( // An empty array means memcache is not used.
array(
'host' => '127.0.0.1',
'port' => 11211, // This is the default memcached port.
'weight' => 100,
),
);
$adminEmail = 'EMAIL ADDRESS';
$installed = true; // Set to true by the installation process.
$maintenanceMode = false; // Set to true during upgrade process or other maintenance tasks.
$instanceConfig = array(); //Set any parameters you want to have merged into configuration array.
//@see CustomManagement
$instanceConfig['components']['request']['hostInfo'] = 'website url';
$instanceConfig['components']['request']['scriptUrl'] = '/app/index.php';
$urlManager = array (); // Set any parameters you want to customize url manager.
? >