我创建了一些迁移文件,这些文件创建了表“ users”和“ user_info”。
运行php artisan migrate
创建了这些表,并将它们添加到数据库的迁移表中。
然后,我需要创建一个新列,并将一些新行添加到user_info表中。因此,我创建了一个新迁移文件,该文件的名称与用于创建“ user_info”表的第一个迁移文件的名称相同。
由于Laravel向文件添加了时间戳,所以我认为不会造成任何问题。但是,在新的迁移文件中,我使用了与第一个迁移文件相同的类名,进行了所需的更改,最后再次运行php artisan migrate
。
这似乎造成了问题,因为我收到一个错误消息,说该类名已被使用。 因此,我将迁移文件名更改为user_info2,并使用类名UserInfo2并再次尝试。 这次可以正常工作,并且在数据库的迁移表中批次已增加到2个。
但是,由于我同时更改了文件名和类名,因此Laravel如何知道迁移文件实际上与第一个user_info迁移文件有关?我认为它们必须具有相同的名称,才能使Laravel拥有“批处理值”的控制权。
感谢您的帮助!
答案 0 :(得分:2)
迁移的批号用于指定在运行php artisan migrate
时创建的多个迁移。
因此,例如,您创建两个迁移:users
和user_info
,您运行php artisan migrate
,这两个迁移将被创建,并由相同的批号引用:1.
然后您创建另一个迁移,在迁移时,该迁移将具有数字2作为批号。
当您基于批号执行php artisan migrate:rollback
时,Laravel知道要回滚的迁移,在这种情况下,只有一个批号为2的迁移。
因此,批处理这个术语意味着一系列尚未运行的迁移。相同的ID将引用这些ID,以使回滚成为可能。
希望这能解释更多。