我知道我可以运行bin / cake迁移迁移–plugin MyPlugin
但是我在我的项目中使用了50个插件,并且id喜欢在所有插件中运行所有迁移,只需一个命令就可以了吗?
最佳答案 据我所知,没有直接的命令来运行所有插件的迁移.但是,您可以组合一个简单的
Shell脚本来执行此操作.
您可以使用以下方法检索应用程序的所有已加载插件的列表: –
$plugins = Plugin::loaded();
然后,您可以使用dispatchShell
运行每个插件的迁移,这允许您从另一个Shell运行命令: –
$this->dispatchShell(
'migrations',
'migrate',
'-p',
$plugin
);
迁移的每个参数都作为参数传递给dispatchShell.
所以,把所有这些放在一个Shell脚本中: –
<?php
// src/Shell/InstallShell.php
namespace App\Shell;
use Cake\Console\Shell;
use Cake\Core\Plugin;
class InstallShell extends Shell
{
public function plugins()
{
$plugins = Plugin::loaded();
foreach ($plugins as $plugin) {
$this->dispatchShell(
'migrations',
'migrate',
'-p',
$plugin
);
}
}
}
这个脚本将被称为$bin / cake install plugins.