是否有任何 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)支持基于每个用户帐户的数据库连接,以便在多租户数据库中使用?的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何用于 PHP 的非 Zend Google 联系人库?