我正在开发20个网站,每个网站都有自己的数据库,但它们具有相同的数据库结构。
问题是我必须登录到不同的后端才能对每个后端做一些工作。
所以,我决定为所有网站编写单个CI后端。
为此,我创建了一个包含两个表的数据库(user
,websites
)
user
表用于登录操作。
websites
表列出所有网站和相关数据库。
我想要做的是,在我的后端应用程序的任何视图中,能够选择数据库(或网站),以便可以使用来自所选数据库的数据重新加载当前视图以执行某些工作然后提交。
我正在使用CI V1.7.2
答案 0 :(得分:1)
这似乎很合理。但请注意,一旦更改数据库适配器,数据库会话存储将无法正常工作,因为它存储在您提到的第一个数据库中。
因此,当您验证用户并获取数据库的DSN(数据库源名称)之后,您可以通过执行以下操作来更改数据库适配器:
$this->database->load('dbdriver://username:password@hostname/database');
请注意dbdriver
是您正在使用的数据库类型,请参阅类型的配置文件。您还可以查看documentation以获取更多信息。
如果您希望数据库会话存储工作,您可能想要创建一个新的数据库适配器,该方法与上面类似,但还有一个参数。
$new_db = $this->database->load($dsn, TRUE);
但是,这种方法很可能需要在您的代码中进行一些重构,因为您习惯于执行$this->database->query();
之类的查询,并且您需要将其更改为$new_db->query()
。