【问题标题】:Use an existing table of a database of one project to another project in Laravel使用一个项目的数据库的现有表到 Laravel 中的另一个项目
【发布时间】:2019-04-20 13:59:02
【问题描述】:

我在 Laravel 中创建了一个单独的集成目录/项目(我们称之为项目接口),并创建了新数据库(我们称之为 DB-A)和 3 个新表(table-a,table-b,@ 987654323@) 通过artisan migrate 命令以及解决方案中与此相关的模型。

现在 Laravel 中有一个不同的项目(我们称之为 project-Web),它有自己的数据库(我们称之为 DB-B)并创建了自己的表和模型(table-x,@987654326 @,table-z)。

我需要做以下事情:

  1. 我可以使用项目接口中table-x 的 DB-B 来保存一些 里面有详细信息吗?
  2. 我可以通过 DB-B 中的 migrate 命令从 project-Interface 创建表 table-a,table-btable-c 吗?
  3. 我可以在项目接口的table-x 中添加更多列并使用它吗?

我可以从project-Web的env文件中使用DB-B的现有DB连接并在Project-Interface的env文件中使用它吗?

如果是,如果我从项目接口创建它,它会在项目 Web 的 DB-B 中创建一个新表吗?这些变化也会反映在那里吗?另外,如果我从 project-Interface 在table-x 中创建了新列,该列会反映在 project-Web 中吗?

所以这里的目的是数据库应该是相同的,并且应该是通用的,其中应该包含其中的所有表以及我从项目接口或项目 Web 进行的任何更改都应该使用 DB-B .

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

    一些答案​​:

    1. 您似乎在询问是否可以写入项目 A 中的数据库 B。简短的回答是肯定的,如果您可以连接到它,那么您可以写入它。数据库不知道您是从不同的 Laravel 项目或位于不同 repo 中的项目连接 - 它只了解数据库用户。

    2. 您还可以运行属于另一个项目的迁移,但根据目前的信息,我建议不要这样做。我将在下面详细解释。

    3. 将列添加到不同的数据库听起来像是对问题 2 的重述,而我的答案将是相同的。

    混合迁移遇到的问题是第二个项目(project-Web)无法创建其所有表。这将增加复杂性:

    • 创建新的开发环境(例如,在项目中添加新的团队成员时)
    • 创建自动化数据库测试,每次运行都需要从头开始拆除和重新创建数据库
    • 创建新的暂存/生产环境

    鉴于您希望在两个项目之间进行一些通信,我想知道 HTTP API 是否合适?这将更容易管理:

    • 您所有的表都存储在一个项目中,您的所有逻辑也都存储在这里。这将极大地简化迁移(从而简化我之前提到的所有环境的创建)。
    • 您可以在一个项目中提供 Web 服务,以便为另一个项目提供读/写服务。从自动化的角度来看,这更容易测试:在 API 项目中,您可以运行 API/HTTP 测试,在客户端项目中,您可以使用模拟。
    • 此方法允许您以干净的方式单独测试项目,然后根据需要进行自动化集成测试(例如,通过使用 CI/CD 将两个项目部署到测试服务器、运行迁移和任何种子文件,然后在一个项目上运行测试,使两个项目以设计的方式协同工作)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 2019-06-14
      • 1970-01-01
      • 2015-04-12
      • 2017-01-20
      • 2021-02-02
      相关资源
      最近更新 更多