Laravel 4 如何一次一步运行Laravel的artisan迁移?

Laravel 4 如何一次一步运行Laravel的artisan迁移?,laravel-4,artisan-migrate,Laravel 4,Artisan Migrate,我已经读过了,但这并没有给我答案 我想知道是否有办法运行该命令,以便它只执行下一次迁移和这一次迁移 我的“迁移”文件夹中有10个文件。其中7个已经迁移。现在我发现,当我创建3个新的并运行命令时,它们都被执行了 问题在于,在数据库“select*from migrations”中,它们显示在一个批中,而不是单独的批中。这意味着,如果我只想回滚一步,我们将返回到第7步,而不是第9步——我想要的 这有时令人困惑,因为我想一次回滚一个步骤,而不是回滚一批的所有步骤 我知道我可以将文件移动到另一个文件夹中

我已经读过了,但这并没有给我答案

我想知道是否有办法运行该命令,以便它只执行下一次迁移和这一次迁移

我的“迁移”文件夹中有10个文件。其中7个已经迁移。现在我发现,当我创建3个新的并运行命令时,它们都被执行了

问题在于,在数据库“select*from migrations”中,它们显示在一个批中,而不是单独的批中。这意味着,如果我只想回滚一步,我们将返回到第7步,而不是第9步——我想要的

这有时令人困惑,因为我想一次回滚一个步骤,而不是回滚一批的所有步骤

我知道我可以将文件移动到另一个文件夹中,只需将其中一个文件夹留给运行“迁移”即可。然后移动下一个并再次迁移,但这非常不方便-如果我在步骤9之前意外地移动并迁移步骤10,会发生什么情况

有人知道这个问题的答案吗

问题在于,在数据库“select*from migrations”中,它们显示在一个批中,而不是单独的批中。这意味着,如果我只想回滚一步,我们将返回到第7步,而不是第9步——我想要的


这并不十分理想,但在运行它们之后,您可以将数据库表中每次迁移的批处理值调整为单独的数字。php artisan migrate:rollback获取最大批处理值并回滚其所有迁移。

有点麻烦,但您可以运行artisan migrate来运行所有迁移,然后使用以下SQL命令使迁移看起来像是一次运行一个:

SET @a = 0;  
UPDATE migrations SET batch = @a:=@a+1;
这会将批处理列更改为1,2,3,4。。等。添加一个批>=。。。在此处设置条件并更新@a的初始值,以仅影响某些迁移

然后,您可以使用artisan migrate:根据需要进行回滚。

在laravel 5.4中,您可以: php artisan迁移-步骤


当您执行这样的命令时,您可以使用默认的php artisan migrate:rollback单独回滚每个迁移,而无需指定回滚的步骤数。

这里有一些信息:简短的版本是迁移不是为此目的而构建的。这与我的问题中的链接完全相同。I道歉我读得太笨拙了。太麻烦了,因为把一个又一个文件复制到文件夹中更快。我用这个。好吧,这是多么麻烦啊。。。那是你的电话。运行两个SQL命令似乎比手动复制文件快。在任何情况下,我都会谦虚地建议SQL是一种更好的方法,就实际解决问题而言,它当然不值得投反对票。这不是我的反对票。我很想知道是否有命令选项。别担心,问题已经回答了。@Arda:是的。我想我最初的公关是为了在核心部分增加一步@科林啊,太好了,我不知道,谢谢你!这将是一个救命稻草!这在某种程度上是有帮助的,但我怀疑它是否真的回答了这个问题。运行该命令将迁移所有迁移,但一次只迁移一个,而不是作为批处理。但问题似乎是,如何只运行一个迁移文件,而不运行其他迁移文件