laravel - Laravel 如何跟踪批次值?
问题描述
我创建了一些迁移文件,这些文件创建了“users”和“user_info”表。Runningphp artisan migrate
创建了这些表并将它们添加到数据库中的迁移表中。
然后我需要创建一个新列并向 user_info 表添加一些新行。所以我创建了一个与第一个迁移文件同名的新迁移文件,该文件用于创建“user_info”表。由于 Laravel 为文件添加了时间戳,我认为这不会产生任何问题。但是,在新的迁移文件中,我使用与第一个迁移文件相同的类名,进行了我想要的更改,最后php artisan migrate
再次运行。
这似乎造成了问题,因为我收到一个错误,说类名已经在使用中。所以我将迁移文件名更改为 user_info2 并使用类名 UserInfo2 并再次尝试。这次它起作用了,并且在数据库的迁移表中,批次已增加到 2 个。
但是 Laravel 怎么知道迁移文件实际上与第一个 user_info 迁移文件相关,因为我更改了文件名和类名?我认为它们必须具有相同的名称才能使 Laravel 控制“批处理值”。
谢谢你的帮助!
解决方案
迁移的批号用于指定在运行时创建的多个迁移php artisan migrate
。
因此,例如您创建两个迁移:users
并且user_info
您运行php artisan migrate
这两个迁移将被创建并由相同的批号引用:1。
然后您创建另一个迁移,当您迁移时,此迁移将具有编号 2 作为批号。
当您php artisan migrate:rollback
根据批次号进行操作时,Laravel 知道要回滚哪些迁移,在这种情况下,只有一个批次号为 2 的迁移。
所以批处理在这个术语中意味着一组尚未运行的迁移。这些将由相同的 ID 引用,以使回滚成为可能。
希望这能解释更多。
推荐阅读
- c++ - 为什么 unordered_map 由于“保留”而有足够的桶时大小会增加?
- html - 使用 css 在材料中具有锋利边缘的工具提示
- office-fabric - Fluent UI - 导入组件的最佳方式
- python-3.x - 仅用 lxml 解析 xml 一定深度
- go - 如何在 Ubuntu 上编译 gomuks?
- php - pdo 找不到驱动程序并且没有 php_pdo 扩展
- bash - 关于在 docker 容器中将文件作为环境变量传递
- python - 使用openpyxl写入数据后如何在excel中忽略“启用编辑”
- emacs - 将列表列表转换为组织表
- java - 使用 PagingAndSortingRepository 时如何禁用 ReactiveCouchbaseRepository