Laravel 4 migrate:rollback with --path on artisan CLI
Posted
技术标签:
【中文标题】Laravel 4 migrate:rollback with --path on artisan CLI【英文标题】: 【发布时间】:2013-08-27 19:58:14 【问题描述】:我在 Laravel 4 上遇到了一些障碍。
由于我无法让artisan:migrate
从app/database/migrations
的内部文件夹生成迁移(例如:app/database/migrations/app1)
我的自定义命令中有这个 app:migrate
/* default path */
$this->call('migrate');
/* custom path */
$this->call('migrate', array('--path' => 'app/database/migrations/app1'));
但我也想要一个app:refresh
命令,它将从自定义路径回滚所有迁移,然后从默认路径回滚..然后像migrate:refresh --seed
所做的那样重新迁移和播种所有内容
我该如何扭转这种局面?调用:
$this->call('migrate:rollback', array('--path' => 'app/database/migrations/app1'));
会产生错误提示
[InvalidArgumentException]
The "--path" option does not exist.
有人可以帮忙吗?
谢谢!
【问题讨论】:
嗯,atm,真的没办法。只有实际的文件名存储在数据库中,没有它的路径,也没有用于回滚命令的路径参数。当然,您可以将其实现为参数,但是当您碰巧从多个路径运行迁移时,这会很糟糕。最好的可能会找到一种方法将其存储在数据库中,分叉存储库并提出更改。 没关系,想通了。 【参考方案1】:您所要做的就是确保您的迁移类可以自动加载。最简单的方法是将保存它们的文件夹的路径添加到composer.json
的autoload.classmap
:
...
"autoload":
"classmap": [
...
"app/database/migrations/app1",
]
,
【讨论】:
【参考方案2】:对于这种情况,您应该使用“--path”选项手动重新运行迁移。
【讨论】:
是否会删除旧表,重新插入它们并再次重新播种? 我已经检查过了,是的,在您再次播种之前,他们不会从数据库中删除旧数据..以上是关于Laravel 4 migrate:rollback with --path on artisan CLI的主要内容,如果未能解决你的问题,请参考以下文章
从 4.1 升级到 4.2 后 Laravel 控制器路由中断
如何将 Laravel 5.4 与 Angular 4 集成