1

我有几个特定于国家/地区的数据库,除了数据库名称外,它们都具有相同的连接属性。

我希望能够从控制器设置数据库名称参数,然后加载数据库配置,而不是在 database.php 中为每个国家添加数据库配置。

就像是:

$db->set_item('database', 'UK_database');

或者

$config->sap->database = 'UK_database';

然后做:

$sap = $this->load->database('sap', TRUE);

这可能吗?

4

1 回答 1

0

首先,我相信您可能需要首先解决一些结构性问题。例如,如果它们是特定于国家/地区的数据库,为什么不直接为它们添加前缀并将表放在同一个数据库中呢?

接下来,我相信你只是想要更干。所以在你的database.php配置中,为什么不直接复制它呢?

$database = array(
    'user' => '',
    'pass' => '',
    ...
);

 $db['dbname1'] = $database;
 $db['database'] = 'Some other database';
 $db['dbname2'] = $database;
 $db['database'] = 'Another database';

至少你会保持你的凭据干燥并遵循使用多个数据库的 CI 约定。

例如,如果您需要更新一个数据库中的记录。

$db = $this->load->database('some_selection_process', TRUE);
$db->do_some->db_related->stuff();
于 2013-07-18T04:25:27.387 回答