【发布时间】:2016-08-19 22:37:54
【问题描述】:
我有点问题。我写了一个PDO 包装器,它允许我对我的数据库执行查询。
现在我的应用程序是多租户的,这意味着我需要不同的数据库。数据源结构的结构如下:
(1) Main Db
(n) Tenant DB
所以我有一个包含我所有公司的主数据库,以及我有登录凭据和用户公司信息的 n 个数据库。
当我的应用程序启动时,我像这样调用我的数据库包装器:
$this->db = new Database('host', 'name', 'user', 'pass');
whis 将在我的index.php 中使用我的默认配置创建一个实例。当我的用户登录时,我将他数据库的连接设置存储到一个全局变量中。
现在的问题是我需要在某个时候使用我的 config.php 数据库凭据,所以我需要在每个模型方法中一次又一次地重新声明数据库对象。这种情况很痛苦。
我能做些什么来解决这个问题?
【问题讨论】:
-
如果各种数据库都在系统数据库服务器上,并且您可以使用相同的用户/密码授予对它们的访问权限,那么您可以执行
select dbname.tablename.field, otherdb.othertable.otherfield from dbname.table ...类型的东西。但是,如果它们是不同的数据库(例如 mysql 和 postgres),并且/或者您需要为每个数据库使用不同的凭据,那么您将必须拥有两个以上的 pdo 对象。 -
不错的解决方案,但如果我有不同的服务器场?