我正在构建基于Yii2高级模板的产品。
作为此产品及其未来部署的一部分,我尝试在常规Yii2迁移中自动创建与授权相关的表。
例如,当最终用户安装产品并运行常规Yii迁移命令时,他应该有一个功能齐全的用户管理和授权。
要使授权工作,Yii2 RBAC documentation page表示需要4个表(auth_ *)。文档说明它们是通过运行以下迁移创建的:
yii migrate --migrationPath=@yii/rbac/migrations
我希望通过在common/migrations
中存储的常规迁移中为他运行此特定迁移代码来抵消最终用户的额外麻烦。
任何简单的解决方案吗?
答案 0 :(得分:4)
我创建了一个migrate.sh文件,其中放置了我需要运行的迁移命令。这允许我在同一时间从多个地方迁移。这很简单,请看这里:https://github.com/Mihai-P/yii2-app-advanced/blob/master/migrate.sh
而不是运行./yii migrate/up
我只需运行sh migrate.sh
即可从任何地方更新所有内容。
实际情况是:你不必坚持Yii给你的确切内容。这只是您构建的模板。分叉它,修改它,使它成为你自己的。
答案 1 :(得分:1)
尝试添加console / config / main.php:
'controllerMap' => [
'migrate' => [
'class' => 'yii\console\controllers\MigrateController',
'migrationPath' => [
'@console/migrations',
'@yii/rbac/migrations',
]
]
],
答案 2 :(得分:0)
另一种方法(不使用* .sh文件)是将rbac_init迁移复制到迁移文件夹:
cp vendor/yiisoft/yii2/rbac/migrations/m???????_rbac_init.php console/migrations/
现在,当您运行php yii migrate
时,它将包含rbac_init
迁移。