【问题标题】:How can I use different databases for different customers with laravel?如何使用 laravel 为不同的客户使用不同的数据库?
【发布时间】:2018-12-04 17:27:01
【问题描述】:

我开发了一个软件来计划和管理学校的会议。到目前为止一切正常,但现在出于安全原因,我需要在不使用同一个数据库的情况下将我的 laravel 应用程序提供给多所学校。

现在我想根据客户端来自哪个 url 使用不同的 MySQL-Connections。

例如:

  • school1.example.org 使用 DB1,
  • school2.example.org 使用 DB2 等。

我的后端应该只在一台带有外部数据库服务器的服务器上。 所以可能是这样的:

  • API 服务器:99.99.99.10
  • DB1 服务器:88.88.88.10
  • DB2 服务器:88.88.88.20
  • UI 服务器:77.77.77.10

我怎么可能意识到这一点?理想情况下,如果新学校想要使用它,它会自动扩展,但如果部署需要手动工作,一开始就可以。

我希望您了解我的需求并能帮助我。

最好的问候,马文

【问题讨论】:

标签: php mysql laravel routing scaling


【解决方案1】:

您可以按照这种方法并根据您的要求进行改进。

  1. 主数据库

    创建Schools 表。在此,对于每所学校,保留子域(唯一标识符)和学校数据库连接信息的记录。

  2. 学校数据库

    这将包含您应用的所有表格。每所学校都有一个单独的数据库。

  3. 只保留config/database.php 中的Master DB 凭据。
  4. 使用 ServiceProvider 将活动 School DB 设置为默认数据库连接,方法是使用 查询 Master DB/Schools Table子域

【讨论】:

    猜你喜欢
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2020-05-02
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多