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:migrateapp/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.jsonautoload.classmap

...
"autoload": 
    "classmap": [
        ...
        "app/database/migrations/app1",
    ]
,

【讨论】:

【参考方案2】:

对于这种情况,您应该使用“--path”选项手动重新运行迁移。

【讨论】:

是否会删除旧表,重新插入它们并再次重新播种? 我已经检查过了,是的,在您再次播种之前,他们不会从数据库中删除旧数据..

以上是关于Laravel 4 migrate:rollback with --path on artisan CLI的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5.4 快速开发简书网站

从 4.1 升级到 4.2 后 Laravel 控制器路由中断

laravel5.4学习--laravel基本路由

如何将 Laravel 5.4 与 Angular 4 集成

Laravel5.4实战快速开发自媒体网站教程 Laravel实战教程

Laravel5.4实战快速开发自媒体网站教程 Laravel实战教程