我们是否可以更改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'
下面是我的表结构与yii2默认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,但您可以使用标准的authmanager来取消对标准'class' => 'yii'rbac'DbManager',
的引用,并为供应商指定一个