如何自定义Yii 2 RBAC表名

时间:2015-11-26 11:46:39

标签: php yii yii2

无论如何我们可以在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;

1 个答案:

答案 0 :(得分:4)

用于高级模板

在你的config / main.hp

在组件部分

h1 {margin:0px}

根据您的需要使用适当的课程 在这种情况下,我使用供应商authmanager,但你可以使用标准的uncommeting标准'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', ], .... ], 和commetting供应商