是否有任何 PHP 框架(例如 CodeIgniter)支持基于每个用户帐户的数据库连接,以便在多租户数据库中使用?

Posted

技术标签:

【中文标题】是否有任何 PHP 框架(例如 CodeIgniter)支持基于每个用户帐户的数据库连接,以便在多租户数据库中使用?【英文标题】:Are there any PHP Frameworks (e.g. CodeIgniter) that support database connections on a per user account basis for use in a Multi-tenant database? 【发布时间】:2011-02-11 07:13:08 【问题描述】:

我正在研究开发一个多租户 SaaS 应用程序,我发现有几个网站描述了一种使用租户 ID 和可更新视图分离数据的可靠方法。例如This blog post

这一切都取决于让您的用户帐户从主用户表进行身份验证的能力,然后让他们各自的数据库连接使用这些用户特定的凭据。这样,视图可以提取用户 ID 并将其映射到租户 ID 以显示该用户的视图。然而,当涉及到数据库连接(存储在文本配置文件中)时,大多数 php 框架往往是非常静态的。他们似乎有矛盾。

有谁知道: a) 如何让 CodeIgniter 优雅地处理这个问题? b) 一个不同的 PHP 框架可能吗?

【问题讨论】:

【参考方案1】:

在非常基础的水平上,您可以这样做:

http://philsturgeon.co.uk/blog/2009/06/How-to-Multi-site-CodeIgniter-Set-up

根据需要扩展它,或将逻辑移至 MY_Controller 以获得更大的灵活性。

【讨论】:

【参考方案2】:

Code Igniter 论坛上有一个话题在讨论这个问题。

http://codeigniter.com/forums/viewthread/165227/#846845

看起来您将用户数据库设置为配置文件中的主数据库,然后根据该用户数据库中的信息为用户生成一个新连接的配置数组。所以,我想您至少需要将数据库名称存储在用户数据库中。

不知道这效果如何,因为我还没有机会尝试。

很抱歉,这不是您想要的,但它应该让您了解 Code Igniter 方法。

【讨论】:

【参考方案3】:

Zend 框架。 http://framework.zend.com/manual/en/learning.multiuser.intro.html

【讨论】:

framework.zend.com/manual/en/zend.db.adapter.html 所以我正在研究这个组件,我想知道如何使用每个用户的凭据实现数据库连接,以完成上面的博文链接。如果对那些知道的人来说很明显,请原谅我,但我正在努力解决这方面的问题。 那篇文章没有提到多租户数据库

以上是关于是否有任何 PHP 框架(例如 CodeIgniter)支持基于每个用户帐户的数据库连接,以便在多租户数据库中使用?的主要内容,如果未能解决你的问题,请参考以下文章

是否有任何框架具有 Java 和 Php 互操作性?

PHP 的 Twitter/PayPal 框架

是否有任何用于 PHP 的非 Zend Google 联系人库?

PHP的'命名空间:控制器或控制器,模型还是模型?

是否有任何包含支持定义按需查询的 UI 的可扩展数据流框架? [关闭]

任何使用像Magento这样的布局和块系统的PHP框架? [关闭]