我创建了一些迁移文件,创建了表"users“和"user_info”。运行php artisan migrate创建了这些表,并将它们添加到数据库的迁移表中。
然后,我需要创建一个新列,并向user_info表中添加一些新行。因此,我创建了一个新的迁移文件,其名称与用于创建"user_info“表的第一个迁移文件同名。因为Laravel在文件中添加了时间戳,所以我认为这不会产生任何问题。然而,在新的迁移文件中,我使用了与第一个迁移文件相同的类名,做了我想要的更改,最后再次运行php artisan migrate。
这似乎造成了问题,因为我收到一个错误,说这个类名已经在使用了。因此,我将迁移文件名更改为user_info2,并使用类名UserInfo2,然后重试。这一次,它起作用了,并且在数据库的迁移表中,批处理被提升到2。
但是,既然我同时更改了文件名和类名,Laravel如何知道迁移文件实际上与第一个user_info迁移文件相关呢?我认为它们必须具有相同的名称,以便使Laravel能够控制“批处理值”。
谢谢你的帮助!
发布于 2019-01-31 18:26:29
迁移的批号用于指定在运行php artisan migrate时创建的多个迁移。
例如,您创建了两个迁移:users和user_info,您运行php artisan migrate,这两个迁移将被创建,并将由相同的批号引用: 1。
然后,您创建另一个迁移,当您迁移此迁移时,此迁移的批号将为2。
当您根据批号执行php artisan migrate:rollback时,Laravel知道要回滚哪些迁移,在这种情况下,只有一个批号为2的迁移。
因此,批处理在这个术语中指的是尚未运行的迁移数组。为了使回滚成为可能,它们将被相同的ID引用。
希望这能解释更多。
https://stackoverflow.com/questions/54458207
复制相似问题