2017-07-31 51 views
1

可以在文件轉儲執行遷移(S)的SQL? (或執行之前?像幹運行)Yii2遷移轉儲SQL

我看了看源代碼,如果我沒有錯,當前的實現不處理它,但可能不會太複雜,添加選項,或者我錯過了什麼?

回答

2

這並不容易,但現在還是可以的。

你將不得不重寫yii\db\Command::execute()回到原始的SQL,而不是執行它。

+0

感謝您指出我在這個方向,我目前複雜的任務似乎是找到如何/在哪裏注入覆蓋類。現在已經沒有時間去嘗試,但希望我會很快,然後我會回到這裏,以確認 – Alex

+0

@Alex您可以通過使用類映射出現在提取前右做到這一點,即覆蓋類。我在[遷移擴展]中做了同樣的事情(https://github.com/bizley/yii2-migration/blob/master/src/Updater.php#L72)。 – Bizley

+0

謝謝,也許這就是這樣,但我的知識仍然有限,我已經擴展了遷移控制器,並在其init()中將classMap放置到我的MigrationSql中,但似乎不起作用(如果我修改遷移擴展到我MigrationSql而不是遷移,當然它的工作原理) – Alex