2012-03-16 108 views
0

所以,在我的項目中有組和用戶。每個用戶都屬於一個組,其中一個用戶也是該組的管理員。我一直在努力弄清楚如何映射這些關係。CakePHP 2.0模型關係(組和用戶)

目前,隨着設置,我正在創建一個表單,將創建一個新的組,同時它的管理員(所以也是一個新用戶)。

我想知道如何設置,所以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

集團的hasMany用戶

用戶屬於關聯組

並添加另一列到用戶表稱爲is_admin也好,它是管理員組的ID值。

對於某些操作,您應該檢查它是否通過了某個條件。因此,如果您想檢查用戶是否爲第4組的管理員,則必須檢查它是否爲is_admin id等於4.對於「正常」用戶,您可以將其設置爲0。

作爲用戶的屬性,管理員不應該在與用戶hasMany管理員和組屬於管理員的數據庫關係中聲明,管理員本身不是模型。它是User的一個屬性,是一個角色。

+0

這很有道理......它比我想要完成的要簡單得多。謝謝! – letsgettechnical 2012-03-16 22:34:54

+0

如果您計劃讓更多這些角色影響某些模型(如本例中的組),則可以考慮創建一個「關係」模型作爲示例。 =) – pbond 2012-03-17 00:08:47