【发布时间】:2016-07-22 23:42:36
【问题描述】:
使用 Codeigniter 3.0.6
到目前为止,我一直在使用 Codeigniter 的标准设置。我有一个数据库,所有连接都很好。我遇到的问题是我想添加一个“global_accounts”数据库,根据当前登录的用户将选择要加载的数据库。
Global_Accounts
--------------------------------------------------------
user | coolUser | user2
pass | coolPassword | passy
url | coolestsite.mysite.com | u2.mysite.com
database_name | coolestsite_application_db | u2_application_db
就我而言,应用程序数据/架构并不重要。我想要的(并且将要设置,但超出了这个问题的范围)是当用户注册时,他们将填写用户、密码和 url,并且 db_name 将被自动创建。然后该脚本将创建一个具有该名称的新数据库,为用户创建应用程序数据库的空白副本。
所以现在,我们正在对其进行硬编码,因此我们可以假设它运行良好。
我想要的是在 Codeigniter 的 database.php 文件中:
$db['default'] = array(
'dsn' => '',
'hostname' => 'mysite.com',
'username' => 'root',
'password' => 'pass',
'database' => 'coolsite_application_db'
...etc
);
我希望能够做这样的事情,而不是硬编码这个文件:
$db['global'] = array(
'dsn' => '',
'hostname' => 'mysite.com',
'username' => 'root',
'password' => 'pass',
'database' => 'global_accounts'
...
);
$db['default'] = array(
'dsn' => '',
'hostname' => 'mysite.com',
'username' => 'root',
'password' => 'pass',
'database' => $this->db['global']->get_db_name($loggedInUserId);
...etc
);
希望这是有道理的——我需要根据登录用户获取数据库名称。显然我需要构建一个模型或只是一个函数来获取它,但问题是在哪里?我要添加一个模型,连接到全局数据库,然后在数据库配置中加载模型吗?是否有其他更简单、更高效的方法来做到这一点,或者就是这样?能否从 codeigniter 配置文件中调用 codeigniter 核心文件?
【问题讨论】:
标签: php mysql database codeigniter