2014-04-14 24 views
-1

我想制作一个类似电子邮件的邮件系统,以便在Intranet上使用。数据库设计如下所示。 我想知道如何制作最好的模特协会。如何在CakePHP中设置模型关联?

CREATE TABLE IF NOT EXISTS `groups` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(60) NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

CREATE TABLE IF NOT EXISTS `im_folders` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(255) NOT NULL, 
    `user_id` int(11) NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

CREATE TABLE IF NOT EXISTS `messages` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `subject` varchar(255) NOT NULL, 
    `body` text, 
    `user_id` int(11) NOT NULL, 
    `created` datetime DEFAULT NULL, 
    `modified` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `group_id` int(11) NOT NULL, 
    `username` varchar(60) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    `password` varchar(60) NOT NULL, 
    `name` varchar(255) NOT NULL, 
    `firstname` varchar(255) NOT NULL, 
    `lastname` varchar(255) NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

CREATE TABLE IF NOT EXISTS `users_messages` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `message_id` int(11) NOT NULL, 
    `im_folder_id` int(11) NOT NULL, 
    `IsSender` tinyint(1) NOT NULL, 
    `IsRead` tinyint(1) NOT NULL, 
    `IsStarred` tinyint(1) NOT NULL, 
    `IsDeleted` tinyint(1) NOT NULL, 
    `created` datetime NOT NULL, 
    `modified` datetime NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 
+3

如何试图阅读说明书* *前开始使用的框架? http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html阅读文档应始终是第一步。 – burzum

回答

4

因此,你加在users_messages表等信息,这样就不会正常工作HABTM。您需要创建另一个型号为UsersMessage.php

你的模型关联可能看起来像是为(如果我没有错过任何一个点) -

Group.php

public $hasMany = array('User'); 

ImFolder.php

public $belongsTo = array('User'); 
public $hasMany = array('UsersMessage'); 

Message.php

public $belongsTo = array('User'); 
public $hasMany = array('UsersMessage'); 

user.php的

public $belongsTo = array('Group'); 
public $hasMany = array('UsersMessage'); 

UsersMessage.php

public $useTable = 'users_messages'; 

public $belongsTo = array('User', 'Message', 'ImFolder'); 

详情连读hasMany through (The Join Model)