2013-08-25 54 views
6

我在上Laravel 4Laravel 4遷移:回滾與工匠CLI --path

一些路障既然不能讓artisan:migrate生成app/database/migrations(EX的內部文件夾遷移:應用/數據庫/遷移/ 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. 

有人可以幫助請。

謝謝!

+0

好,ATM,實在是沒有辦法。只有實際的文件名存儲在數據庫中,沒有它的路徑,並且沒有用於回滾命令的路徑參數。當然,您可以實現它的參數,但是當您碰巧從多個路徑運行遷移時,這會很糟糕。最好的方法可能會找到一種方法在數據庫中存儲來自哪裏,分叉回購並提出更改。 – rmobis

+0

沒關係,算出來。 – rmobis

回答

5

您所要做的就是確保您的遷移類可以自動加載。這樣做最簡單的方法是將路徑添加到你他們保持到composer.jsonautoload.classmap的文件夾:

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

很酷。這工作!謝謝! – reikyoushin

-2

對於這種情況,您應該使用「--path」選項手動重新運行遷移。

+0

會丟棄舊錶,重新插入它們並重新播種它們? – reikyoushin

+0

我檢查過,是的,他們不會從數據庫中刪除舊的數據,然後再種子.. – reikyoushin