Laravel 4中使用artisan CLI命令的--path选项进行migrate:rollback

6

我在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.

有人能帮忙吗?

谢谢!


目前,实际上没有办法。数据库中仅存储实际文件名,而不是其路径,并且回滚命令没有路径参数。当然,您可以实现该参数,但如果您从多个路径运行迁移时,这将是不好的。最好的方法可能是找到一种在数据库中存储它来自哪里的方法,fork该repo并提出更改建议。 - rmobis
没事了,我解决了。 - rmobis
2个回答

5

您需要做的就是确保您的迁移类可以自动加载。最简单的方法是将保存它们的文件夹路径添加到composer.jsonautoload.classmap中:

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

-2

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


这会删除旧表,重新插入它们并再次进行种子填充吗? - reikyoushin
我已经检查过了,是的,在再次进行种子操作之前,他们并没有从数据库中删除旧数据。 - reikyoushin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接