是否有可能以遷移所有表格的方式執行php artisan migrate
,但在database\migrations
下僅保留少數遷移文件?php工匠遷移除了幾個以外的所有表格
情景是,我們的業務需求需要2個DB。所以很少有遷移文件明確提到第二個數據庫。當我爲PHPUnit創建另一個數據庫時,我不需要運行與第二個數據庫關聯的遷移文件。
是否有可能以遷移所有表格的方式執行php artisan migrate
,但在database\migrations
下僅保留少數遷移文件?php工匠遷移除了幾個以外的所有表格
情景是,我們的業務需求需要2個DB。所以很少有遷移文件明確提到第二個數據庫。當我爲PHPUnit創建另一個數據庫時,我不需要運行與第二個數據庫關聯的遷移文件。
您可以將您不希望自動運行的任何遷移置於子文件夾中。例如:
/database
/migrations
/db2
migration_3
migration_1
migration_2
現在,當你運行:
php artisan migrate
只有在database/migrations
目錄遷移將運行(非遞歸,所以db2
目錄不會被遍歷),只有migration_1
意思將運行migration_2
。
要運行在db2
目錄中的遷移分別可以使用--path
選項,如下所示:
php artisan migrate --path=/database/migrations/db2
遷移表的想法是漸進的。
php artisan migrate
將遷移migrations
文件夾內的所有文件。
您不能更改它的順序或要求某些遷移不運行。
您可以根據需要創建儘可能多的遷移文件,並使用它們刪除或添加列或表格。
如果您需要一點點黑客攻擊,您可以在migrations
中創建一個子文件夾並將所有不需要的遷移移動到那裏,然後運行php artisan migrate
。這將避免子文件夾及其中的所有遷移。
你是說你已經運行所有遷移一次之後,你會想刪除一些已遷移文件?如果是這樣,爲什麼? – Bogdan
遷移有--database選項,但我還沒有嘗試過如何工作。我認爲你最好的選擇是創建你自己的遷移命令。 –
我們可以提供--database選項來遷移泛型類。但是當文件指定明確的連接時它不起作用。 – Kannan