首页 > 解决方案 > Laravel 如何跟踪批次值?

问题描述

我创建了一些迁移文件,这些文件创建了“users”和“user_info”表。Runningphp artisan migrate创建了这些表并将它们添加到数据库中的迁移表中。

然后我需要创建一个新列并向 user_info 表添加一些新行。所以我创建了一个与第一个迁移文件同名的新迁移文件,该文件用于创建“user_info”表。由于 Laravel 为文件添加了时间戳,我认为这不会产生任何问题。但是,在新的迁移文件中,我使用与第一个迁移文件相同的类名,进行了我想要的更改,最后php artisan migrate再次运行。

这似乎造成了问题,因为我收到一个错误,说类名已经在使用中。所以我将迁移文件名更改为 user_info2 并使用类名 UserInfo2 并再次尝试。这次它起作用了,并且在数据库的迁移表中,批次已增加到 2 个。

但是 Laravel 怎么知道迁移文件实际上与第一个 user_info 迁移文件相关,因为我更改了文件名和类名?我认为它们必须具有相同的名称才能使 Laravel 控制“批处理值”。

谢谢你的帮助!

标签: laravel

解决方案


迁移的批号用于指定在运行时创建的多个迁移php artisan migrate

因此,例如您创建两个迁移:users并且user_info您运行php artisan migrate这两个迁移将被创建并由相同的批号引用:1。

然后您创建另一个迁移,当您迁移时,此迁移将具有编号 2 作为批号。

当您php artisan migrate:rollback根据批次号进行操作时,Laravel 知道要回滚哪些迁移,在这种情况下,只有一个批次号为 2 的迁移。

所以批处理在这个术语中意味着一组尚未运行的迁移。这些将由相同的 ID 引用,以使回滚成为可能。

希望这能解释更多。


推荐阅读