2017-07-10 20 views
3

複数のクライアントにインストールされるアプリケーションを作成しており、OracleとMySqlのような複数の異なるデータベースを使用するため、すべてのクライアントのDB構成が異なります。 1つのデータベースはすべて共通です。私はdb configの詳細を保存する場所と同じテーブルを作成しました。ここでdatabase.phpのテーブルからそのデータを選択する方法を示します。データベース設定からDB設定の値を取得する方法CakePHPのテーブル?

何かを見つけることができませんがDATABASE_CONFIG {

public $default = array(
    'datasource' => 'Database/Mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'root', 
    'password' => 'root', 
    'database' => 'hrportal_imp', 
    'prefix' => '', 
    //'encoding' => 'utf8', 
); 
//want to fetch data from x table from Default datasource. 
public $ora = array(
    'datasource' => 'Database/Oracle', 
      'persistent' => false, 
      'host' => '<IP i get from above db>', 
      'port' => '1521', 
      'login' => '<Data i get from above db>', 
      'password' => '<Data i get from above db>', 
    'database' => '<IP i get from above db>:1521/orcl', 
      'prefix' => '', 
    'sid' => 'orcl' 

); 

} `

答えて

4

私はそれをAppControllerのBeforefilterに配置しています。

App::import('Model', 'ConnectionManager'); 
     ConnectionManager::create('ora', 
     $config = array('datasource' => 'Database/Oracle', 
         'persistent' => false, 
         'host' => 'dynamic Host', 
         'port' => '1521', 
         'login' => 'HCM', 
         'password' => 'hdhd', 
         'database' => 'dynamic host:1521/dhdh', 
         'prefix' => '', 
         'sid' => 'orcl') 
      ); 
1

は、デフォルトでは、CakePHPはあなたの$デフォルトの変数の中に記述することができ、 "デフォルト" の設定を使用します.`class混乱ビット。要件に応じてデータベース接続を変更することもできます。現在選択されているデータベースもコントローラ上で確認できます。

App::import('Model', 'ConnectionManager'); 
$ds = ConnectionManager::getDataSource('default'); 
echo $ds->config['database']; 
+0

これは、単にデータベース名 –

+0

を表示するためのものです。私はあなたに例をあげました。あなたは、あなたが別のデータベースを選択する必要があるときはいつでも、この方法で現在のデータベースを変更することができます。 $ ds = ConnectionManager :: getDataSource( 'ora'); echo $ ds-> config ['database'];ありがとう –

関連する問題