如何在Laravel中从现有数据库创建迁移

22

我是laravel的新手。我知道如何使用laravel迁移命令创建数据库。

我已经在mysql中创建了数据库。那么我该如何将迁移从那个数据库转换过来。

8个回答

19
你可以使用Jeffrey Way的Laravel 4生成器工具,或手动创建。这是一个非常有用的工具。https://github.com/JeffreyWay/Laravel-4-Generators(如果你正在使用Laravel 5,请改用这个扩展包:https://github.com/laracasts/Laravel-5-Generators-Extended
另外,你可以尝试以下几个包,它们应该能将现有的模式转换为Laravel迁移。我没有试过它们,但你可以看一下: 此外,阅读另一个问题中的以下答案也可能对你或其他人有用:Reverse engineering or Auto-Generations of Entities in Laravel?

4
补充一下,这里还有另一个我目前使用的软件包:https://github.com/Xethron/migrations-generator。它正在积极维护,工作效果很好。 - noeldiaz
此外,您可以尝试使用 https://packagist.org/packages/gguney/rmigration 这个包。 - Erkan Özkök
2
JefferyWay生成器不会从现有数据库生成迁移。为什么这是这个问题的被接受的答案? - Mubashar Abbas
3
我刚刚使用了 https://github.com/kitloong/laravel-migrations-generator ,对我很有效。我是通过访问 https://github.com/Xethron/migrations-generator 发现的,注意到它只支持 Laravel 5.4及以下版本,看了Github问题页面上说不支持5.8,在关于支持Laravel 7的 [这个问题][https://github.com/Xethron/migrations-generator/issues/200] 中,有人贴出了另一个链接。 - Tyler Collier

7

你知道有哪些可用来创建种子文件的包吗? - Pathros
抱歉,我没有使用任何。 - Jeremy Belolo
我刚刚发现了orangehill/iseed,以备将来参考;) 它说它支持Laravel 9(我从未失去信心)。 - Pathros

5
如果接受的答案(编辑此帖子时)对您无效,请使用这种简单的方法。

看看Kitloong的这个软件包,非常容易使用。

https://github.com/kitloong/laravel-migrations-generator

安装后,只需运行类似以下内容的命令,将迁移导出到您选择的位置:

php artisan migrate:generate --path="path\to\existing\folder"

示例:

php artisan migrate:generate --path="C:\xampp\htdocs\laravel_bs4\database\migrations\my_new_migrations"

你应该最终得到从数据库创建的迁移,并保存在您指定的位置。
您可以省略--path选项,直接运行。
php artisan migrate:generate 

这会将其导出到默认的Laravel迁移文件夹(这通常不是我想要的内容)。

一定要遵循提示。通常遵循默认设置是可以的。


3

此解决方案还提供了一个 PHP 脚本。 - Ali Khalili

2

这乍一看是个有用的工具。但除了最简单和基础的SQL语句,它很快就会失败。对于除了绝对最简单的情况之外的所有迁移生成,这并不是一个有用的方式。 - speby
我不确定这个工具有多旧,但它带来的麻烦比它的价值还大。对于字段\status` int(1) NOT NULL DEFAULT 1的SQL创建表定义,它输出了一行类似于$table->integer('status',1)->default(1)的代码。integer()`函数的第二个参数应该是自增布尔值。所以我一直收到类似于“只能有一个自动列”的错误。 - Tyler Collier

2

这个怎么样?

迁移生成器。它是为Laravel 4、5、6和7设计的,但我不确定是否适用于Laravel 8。


(09-2020)在全新的Laravel 8安装中失败了。这真是遗憾。 - micksp
刚刚添加了 Laravel 8 的支持,显然。 - Chuck Le Butt

1
如果您不介意在项目中使用Doctrine 2而不是具有反向工程功能的Eloquent。

0
对于 Laravel 9,请参考以下链接: https://laravel.com/docs/9.x/migrations#generating-migrations

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接