如何在cakephp 3中运行所有插件的所有迁移?

我知道我可以运行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.

点赞