0

我在 20 个网站上工作,每个网站都有自己的数据库,但它们的数据库结构相同。

问题是我必须登录到不同的后端才能对每个后端进行一些工作。

因此,我决定为所有网站编写单个 CI 后端。

为此,我创建了一个包含两个表 ( user, websites)的数据库

user表用于登录操作。

websites表列出了所有网站和相关的数据库。

我想做的是,在我的后端应用程序的任何视图中,都能够选择数据库(或网站),以便当前视图可以重新加载来自所选数据库的数据以对其执行一些工作,然后提交它。

我正在使用 CI V1.7.2

4

1 回答 1

1

这似乎很有道理。但是,请注意,一旦您更改了数据库适配器,数据库会话存储将无法按预期工作,因为它存储在您提到的第一个数据库中。

因此,当您验证用户并获取数据库的 DSN(数据库源名称)后,您可以在执行查询时更改数据库适配器,方法是:

$this->database->load('dbdriver://username:password@hostname/database');

请注意,这dbdriver是您使用的数据库类型,请参阅配置文件了解类型。您还可以查看文档以获取更多信息。

如果您希望数据库会话存储工作,您可能需要创建一个新的数据库适配器,方法与上面类似,但还有一个参数。

$new_db = $this->database->load($dsn, TRUE);

但是,此方法很可能需要在代码中进行一些重构,因为您习惯于执行类似的查询,$this->database->query();并且需要将其更改为$new_db->query().

于 2012-11-02T12:26:42.827 回答