Orm CakePHP 2.0模型关系(组和用户)

Orm CakePHP 2.0模型关系(组和用户),orm,cakephp-2.0,Orm,Cakephp 2.0,因此,在我的项目中有组和用户。每个用户都属于一个组,其中一个用户也是该组的管理员。我一直在努力找出如何映射这些关系 目前,通过设置,我正在创建一个表单,该表单将同时创建一个新组及其管理员(以及一个新用户) 我想知道如何设置它,以便A-我可以正确保存用户和组,B-以便在表单中验证用户和组信息并显示错误 这是我的数据库表的当前布局 分组表: `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(10) unsigned DEFAUL

因此,在我的项目中有组和用户。每个用户都属于一个组,其中一个用户也是该组的管理员。我一直在努力找出如何映射这些关系

目前,通过设置,我正在创建一个表单,该表单将同时创建一个新组及其管理员(以及一个新用户)

我想知道如何设置它,以便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',
  )
);
谢谢你的帮助!如果我能提供更多信息,请告诉我。

集团有很多用户

用户所属组

只需向Users表中添加另一列,名为is_admin或其他任何内容,该列的值为它所属组的ID

对于某些操作,您只需检查它是否通过了特定条件。因此,如果要检查用户是否是组4的管理员,则必须检查其is_admin id是否等于4。对于“普通”用户,可以设置为0


作为用户的属性,管理员不应在您与用户的数据库关系中声明,因为用户拥有多个admin和一个属于admin的组,admin本身不是一个模型。它是用户的一个属性,一个角色。

这很有意义。。。。这比我想完成的要简单得多。谢谢如果您计划制作更多这些角色,这些角色会影响某些模型,例如本例中的组,您可以考虑创建一个“关系”模型