在没有 Laravel 的情况下使用 Laravel 数据库迁移和种子 [关闭]

Posted

技术标签:

【中文标题】在没有 Laravel 的情况下使用 Laravel 数据库迁移和种子 [关闭]【英文标题】:Using Laravel database migrations and seeds without Laravel [closed] 【发布时间】:2018-10-18 18:19:05 【问题描述】:

我有一个使用迁移设置数据库的 Laravel 应用程序。出于多种原因,我们决定搬到 Phalcon,因此,在迁移和播种方面,新员工入职会带来一些问题。由于我们还没有新员工的数据库,因此我们需要为他们创建一个包含种子数据的数据库。

我们可以在准备好的数据库和已经填充的种子数据中创建一个 SQL 文件,但是我想知道是否以及如何在非 Laravel 应用程序中利用 Laravel 的迁移。

迁移似乎是一件在没有 Laravel 的情况下应该相对容易使用的事情,但是很少有关于这样做的信息,或者即使它是可能的。

有人有这方面的经验吗?你采取了什么方法?

【问题讨论】:

你需要使用Illuminate\database,this可能对你有帮助。 这是一个好的开始,我看到的问题是迁移文件已经存在。它使用 Phinx 来处理迁移,所以如果已经迁移了任何东西,如果我将它们复制过来,它就不会知道这些类。我会玩一玩,看看我能走多远! 【参考方案1】:

在没有框架的情况下运行 Laravel 迁移很困难的主要原因之一是:facades

此时使用Schema 外观几乎会将您锁定在框架中。除非您想编写自己的 \Illuminate\Contracts\Foundation\Application 实现并自己引导外观。

如果您不这样做,则您已经需要完成在迁移中替换外观使用的工作。届时不妨继续用 Phinx 迁移完全替换它们。

绝对可以保持 Laravel 迁移原样。但是这值得吗?特别是如果您希望将来完全迁移到 Phinx。

另外考虑一下:如果你的很多 Laravel 迁移现在已经过时并且不代表当前的数据库结构,为什么要保留它们?

【讨论】:

你提出了很多好的观点,谢谢。我认为陈旧的迁移问题是一个很好的问题,因为我可以使用当前的数据库模式生成 Phinx 迁移,而不是在整个迁移堆栈中上下移动。由于整个应用程序正在重写,因此不需要遍历那么远,但它仍然存在不知道要运行哪些迁移的问题,除非我手动将它们添加到实时服务器上的 Phinx 日志中。然而,这完全是一个不同的问题! 您最初的 Phinx 迁移可以在创建表之前检查表是否已经存在。虽然这将是一个相当大的第一次迁移,但您不必担心数据库中已经存在什么。或者,如果您想重新利用它,您的第一次迁移可能是操作现有的 migrations 表。【参考方案2】:

我总是在 Laravel 之外使用 Phinx 来实现这一点。那里的文档非常扎实。

http://docs.phinx.org/en/latest/migrations.html

【讨论】:

我们已经在使用 Phinx 迁移,但是我们已经用 Laravel 编写了许多迁移,我们需要运行它们。问题是在该项目之外运行 Laravel 中已经存在的迁移,要么通过复制文件并运行迁移器,要么使用 The Alpha 评论中的指南以允许 Phinx 以某种方式读取迁移。跨度>

以上是关于在没有 Laravel 的情况下使用 Laravel 数据库迁移和种子 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Larave使用composer安装无反应,提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Compose

Larave使用composer安装无反应,提示“Changed current directory to C:/Users/Administrator/AppData/Roaming/Compose

Larave中CSRF攻击

PHPStorm - Laravel Eloquent 没有代码提示 [重复]

laravel框架(blade模板引擎)

手把手教你跑Larave框架实战笔记系列之二