所以,在我的项目中有组和用户。每个用户属于一个组,其中一个用户也是该组的管理员。我一直在努力弄清楚如何映射这些关系。
目前设置我正在创建一个表单,该表单将同时创建一个新组及其管理员(因此也是一个新用户)。
我想知道如何设置它以便A-我可以正确地保存用户和组B-因此,在表单中,用户和组信息都可以被验证并显示错误。
这是我的数据库表格的当前布局
小组表:
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned DEFAULT NULL,
`name` varchar(60) NOT NULL,
`account_active` tinyint(1) DEFAULT NULL,
`create_date` date NOT NULL,
`last_modified` date NOT NULL,
`delete_date` date DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `groups_fk_admin` (`administrator`),
CONSTRAINT `groups_fk_admin` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
用户表:
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`group_id` int(10) unsigned DEFAULT NULL,
`email` varchar(200) NOT NULL,
`password` varchar(40) NOT NULL,
`first_name` varchar(45) NOT NULL,
`last_name` varchar(45) NOT NULL,
`create_date` date NOT NULL,
`last_modified` date NOT NULL,
`delete_date` date DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
KEY `users_group_id_fk` (`group_id`),
CONSTRAINT `users_group_id_fk` FOREIGN KEY (`group_id`) REFERENCES `groups` (`id`)
然后我的模型目前设置为....
小组模特:
public $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'group_id',
'dependent' => false,
)
);
public $belongsTo = array(
'Administrator' => array(
'className' => 'User',
'foreignKey' => 'user_id',
)
);
用户型号:
public $hasMany = array(
'Admin' => array(
'className' => 'Group',
'foreignKey' => 'user_id',
'dependent' => false,
),
);
public $belongsTo = array(
'Group' => array(
'className' => 'Group',
'foreignKey' => 'group_id',
)
);
感谢您的帮助!如果我能提供更多信息,请告诉我。
答案 0 :(得分:0)
群组拥有多个用户
用户所属组
只需在Users表中添加另一个名为is_admin或其他的列,其中包含管理员所在组的ID值。
对于某些操作,您只需检查它是否通过某种情况。因此,如果您想检查用户是否是第4组的管理员,则必须检查它的is_admin id是否等于4.您可以将“普通”用户设置为0。
作为用户的财产,管理员不应该在您的数据库关系中声明与用户hasMany管理员和组属于管理员,管理员不是自己的模型。它是User的一个属性,一个角色。