gpt4 book ai didi

php - 如何自定义 Yii 2 RBAC 表名

转载 作者:可可西里 更新时间:2023-10-31 23:03:04 24 4
gpt4 key购买 nike

我们是否可以在 yii 2 中更改 RBAC 表名?

我将 authManager 配置如下,

'authManager' => [
'class' => 'yii\rbac\DbManager',
'assignmentTable'=> '{{%AuthAssignment}}',
'itemChildTable'=> '{{%AuthItemChild}}',
'itemTable'=> '{{%AuthItem}}',
'ruleTable'=> '{{%AuthRule}}',
'defaultRoles' => ['guest'],
],

现在我还需要知道如何自定义列名。 yii 默认查询默认列名,所以我收到此错误。

Column not found: 1054 Unknown column 'rule_name' in 'field list'

下面是我的表结构与 yii 2 默认 RBAC 表的不同之处。

CREATE TABLE IF NOT EXISTS `AuthRule` (
`name` varchar(64) NOT NULL,
`data` text,
`createdAt` int(11) DEFAULT NULL,
`updatedAt` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `AuthItemChild` (
`parent` varchar(64) NOT NULL,
`child` varchar(64) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `AuthItem` (
`name` varchar(64) NOT NULL,
`type` int(11) NOT NULL,
`description` text,
`ruleName` varchar(64) DEFAULT NULL,
`data` text,
`createdAt` int(11) DEFAULT NULL,
`updatedAt` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE IF NOT EXISTS `AuthAssignment` (
`itemName` varchar(64) NOT NULL,
`userId` varchar(64) NOT NULL,
`createdAt` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

最佳答案

高级模板

在你的 config/main.hp 中

在组件部分

'components' => [
'authManager' => [
//'class' => 'yii\rbac\DbManager',
'class' => 'vendor\yourVenderName\auth\models\DbManager',
'cache' => 'cache',
//these configuratio allow to rename the auth table
'itemTable' => 'my_auth_item',
'assignmentTable' => 'my_auth_assignment',
'itemChildTable' => 'my_auth_item_child',
'ruleTable' => 'my_auth_rule',
],

....
],

根据需要使用适当的类在这种情况下,我使用供应商 authmanager,但您可以使用标准的取消提交标准 'class' => 'yii\rbac\DbManager', 并提交供应商 one

关于php - 如何自定义 Yii 2 RBAC 表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33937891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com