【问题标题】:Laravel 5.3: Migrate step by stepLaravel 5.3:逐步迁移
【发布时间】:2017-02-26 11:19:35
【问题描述】:

我想知道是否可以在 Laravel 5.3 中逐个迁移迁移。

我无法使 --step 选项正常工作,文档仅提及此选项与 rollback 或 refresh 命令一起使用。

// this works
php artisan migrate:rollback --step=1
// this doesn't work
php artisan migrate --step=1

谢谢你,祝你有美好的一天

【问题讨论】:

  • 是--step 实际上意味着像迁移数据库那样工作吗?我以为它只是用于回滚?
  • @AndyHolmes 是正确的,您的迁移文件没有分配步骤编号。当您运行 migrate artisan 发现任何尚未运行的迁移时,它会将它们作为批处理运行,并在将它们添加到 migrations db 表时分配一个步骤号。

标签: php laravel laravel-5 migration database-migration


【解决方案1】:

没有正式的方式来逐一运行迁移,因为通常不需要这样做,因为它们易于同时添加,这对 laravel 来说是一个好处。

--step=x 仅在回滚迁移时使用。

如果您确实想要一个一个地运行迁移,他们实现这一目标的方法是将它们一个一个地添加到每次运行 php artisan migrate 的项目中。

我希望这对您有所帮助,如果您还有其他需要或不清楚的地方,请发表评论。

【讨论】:

  • 您也可以在要停止的迁移文件的开头添加die() 或exit()
【解决方案2】:

如果您想逐个运行迁移,您可以尝试以下方法:

( \
  mkdir migrations-tmp; \
  for i in database/migrations/[0-9]*.php; do \
    echo `basename $i`:; \
    cp -a $i migrations-tmp/ && \
    php artisan migrate --force --path `pwd`/migrations-tmp --pretend -vvvv; \
    rm -f migrations-tmp/*; \
  done \
); \
rm -rf migrations-tmp

解释:

  • 制作一个临时目录
  • 对于每个迁移文件
    • 输出它的名字
    • 将迁移文件复制到临时目录
    • 通过指定迁移文件的路径来执行此单一迁移
    • 从临时目录中删除迁移文件
  • 删除临时目录

【讨论】:

  • 关于逐个运行迁移的好建议......我正在寻找这样的东西......谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 2017-05-07
  • 2017-05-27
  • 2017-04-10
  • 2017-06-21
  • 2013-08-09
相关资源
最近更新 更多