2017-07-31 83 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