如何用单个PDO实例处理多个数据库


How to handle multiple databases with single PDO instance?

我有一点小问题。我写了一个PDO包装器,允许我在我的数据库上执行查询。

现在我的应用程序是多租户的,这意味着我需要不同的数据库。数据源结构的结构如下:
(1) Main Db 
(n) Tenant DB

我有一个主数据库存放我所有的公司,n个数据库存放我的登录凭据和用户公司信息。

当我的应用程序启动时,我像这样调用我的db包装器:

$this->db = new Database('host', 'name', 'user', 'pass');

这将在我的index.php中创建一个具有默认配置的实例。当我的用户登录时,我将他的数据库的连接设置存储到一个全局变量中。

现在的问题是,我需要在某些时候使用我的config.php数据库凭证,所以我需要在每个模型方法中一次又一次地重新声明数据库对象。这个场景很痛苦。

我能做些什么来解决这个问题?

如果mysql用户可以访问两个数据库,那么只需在表名前加上数据库名:

SELECT id,name FROM database_name.users_table

如果您需要作为一个不同的用户登录,那么是的,您需要创建一个新的PDO实例。