如何从CakePHP中的某些数据库表获取数据库配置的值?

时间:2017-07-10 06:57:25

标签: mysql cakephp-2.0

我正在制作一个将安装在多个客户端的应用程序,每个客户端的数据库配置将有所不同,因为我将使用多个不同的数据库,如Oracle和MySql。 一个数据库将是共同的,我已经创建了一个表,我将保存db配置详细信息,现在如何从database.php中的表中选择该数据。

找不到任何有点困惑.`class 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'

);

}`

2 个答案:

答案 0 :(得分: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 :(得分:1)

默认情况下,cakephp将使用您可以在$ default变量中编写的“默认”配置。您也可以根据要求更改数据库连接。您也可以在控制器上检查当前选定的数据库。

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