Yii2 作为常规应用程序迁移的一部分运行初始RBAC迁移

Yii2 作为常规应用程序迁移的一部分运行初始RBAC迁移,yii2,yii2-advanced-app,yii2-user,Yii2,Yii2 Advanced App,Yii2 User,我正在构建一个基于Yii2高级模板的产品 作为本产品及其未来部署的一部分,我正在尝试在常规Yi2迁移中自动创建与授权相关的表 例如,当最终用户安装产品并运行常规Yii迁移命令时,他应该有一个功能齐全的用户管理和授权活动 为了获得工作授权,需要4个表(auth*)。文档说明它们是通过运行以下迁移创建的: yii迁移--migrationPath=@yii/rbac/migrations 我希望通过在将存储在common/migrations中的常规迁移中为最终用户运行此特定的迁移代码来抵消此额外的

我正在构建一个基于Yii2高级模板的产品

作为本产品及其未来部署的一部分,我正在尝试在常规Yi2迁移中自动创建与授权相关的表

例如,当最终用户安装产品并运行常规Yii迁移命令时,他应该有一个功能齐全的用户管理和授权活动

为了获得工作授权,需要4个表(auth*)。文档说明它们是通过运行以下迁移创建的:

yii迁移--migrationPath=@yii/rbac/migrations

我希望通过在将存储在
common/migrations
中的常规迁移中为最终用户运行此特定的迁移代码来抵消此额外的麻烦


有什么简单的解决方案吗?

我已经创建了一个migrate.sh文件,在其中放置了需要运行的迁移命令。这使我可以同时从多个地方迁移。很简单,请看这里:

我没有运行
/yii migrate/up
而是运行
sh migrate.sh
,它将从任何位置更新所有内容


实际上,这一点是:你不必严格遵守Yii给你的东西。这只是一个供您构建的模板。分叉它,修改它,让它成为你自己的。

尝试在console/config/main.php中添加:

'controllerMap' => [
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            'migrationPath' => [
                '@console/migrations',               
                '@yii/rbac/migrations',
            ]
        ]
    ],
另一种方法(不使用*.sh文件)是将rbac_init迁移复制到迁移文件夹:

cp vendor/yiisoft/yii2/rbac/migrations/m???????_rbac_init.php console/migrations/

现在,当您运行
php yii migrate
时,它将包括
rbac_init
迁移。

构建单个集中脚本或.sh文件的想法很好。我从另一个角度看待这个问题。谢谢你的解决方案。标记为已接受。我在过去构建过其他东西,但这是自动部署人员最终要求的。作为一个shell脚本,您可以非常轻松地进行部署。