【问题标题】:Multi-database design application using Laravel 5.3 and Codeigniter使用 Laravel 5.3 和 Codeigniter 的多数据库设计应用程序
【发布时间】:2017-01-23 15:07:09
【问题描述】:

朋友们,我正在构建一个服务应用程序,并希望看到一个粗略的建议来实现。

该应用程序的核心是管理研究项目,因此它将有一组用户,他们属于一个组织,他们登录并管理自己的项目。许多组织开展此类项目,其性质相同。项目管理具有相同的数据库表和模式(跨机构)。我设计了一个计划如下:

  1. Database-1:一个通用数据库用户表(所有机构一起)通过查询此表进行身份验证。这张表有一列对应每个用户的机构代码。

  2. Database-2(机构代号为名称):以机构代号为基础,通过连接该数据库完成所有项目管理。在此数据库中将存在表。

....

  1. Database-x(机构代码作为它的名字).....

所有数据库都将具有相同的架构和相同的用户界面。通过这种方式,学院明智的管理很容易。

现在,使用 Laravel,我知道我可以连接到多个数据库。我已经在 codeigniter 3 中完成了这项工作,但由于 Codeigniter 3 和 Laravel 5.3 之间的模型架构不同,我尝试迁移到 Laravel 5.3。

任何更好的建议。我知道我的查询不是一个纯粹的问题,但这个问题是关于多对多关系的实现。

【问题讨论】:

    标签: php mysql database codeigniter laravel-5.3


    【解决方案1】:

    既然所有机构都有相同的模块和相同的功能,为什么要创建多个数据库?我已经成功地完成了一个与您类似的项目,一个集中式 CMS,它将所有教堂整合到 CodeIgniter 中的一个教区之下。

    只需在所有表中添加一个机构ID,每次都使用机构ID查询您的表操作。添加多个数据库肯定会降低您的项目性能并增加复杂性。机构表将跟踪您的所有机构。

    如果您需要有关数据库结构和实现的更多详细信息,请在下方评论。

    【讨论】:

    • 我已按照您的建议进行了编码。但是,尝试这样做有三个原因。 (i) 当数据库膨胀时,发现查询速度更快 (ii) 没有整体管理员。管理自己研究所的是当地管理员。管理应用程序备份和维护的应用程序管理员 (iii) 如果需要因计费问题停止机构,则无需从整个表中取出特定机构数据。我认为这些都是优势。
    【解决方案2】:

    我已经成功地处理了多数据库和多域应用程序。 在那我创建了一个表“分支”,它存储了多个分支的详细信息 比如它的数据库名,域名。

    我已在表“branches”中将记录设置为 domain="branch1", database="db_branch1"

    还设置检查有效域名并允许为域“branch1”关联路由的中间件。

    一旦主公共数据库对用户信用进行身份验证,它就会连接到主连接中的分支数据库。

    不能用很短的方法解释,这里我只是解释一下工作流程。如果您需要更多详细信息,我会解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2023-03-20
      • 2011-12-07
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      相关资源
      最近更新 更多