2011-05-02 14 views
1

我正在建模一个社交网络样式的网站,人们可以在他们的联系人列表中拥有其他人,我想将这种关系建模为同一个表格上的HABTM关系用户,但根据http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM我不得不放弃创建表是这样的:phpcake HABTM用户有很多朋友,表格命名约定

CREATE TABLE IF NOT EXISTS `users_users` (
    `users_users.id` int(11) NOT NULL AUTO_INCREMENT, 
    `users_users.user_id` int(11) NOT NULL , 
     `users_users.user_id` int(11) NOT NULL , 
    PRIMARY KEY (`users_users.id`) 

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 

请帮帮忙,我该怎么避免重复?

回答

2

对于引用同一个表的HABTM关系,您需要更改外键的名称。定义users_users,有三个字段:id,user_idfriend_id

在用户模式,建立了关系,分配一个明确的外键和associationForeignKey:

var $hasAndBelongsToMany = array(
    'Friend' => array(
     'joinTable' => 'users_users', 
     'className' => 'User', 
     'foreignKey' => 'user_id', 
     'associationForeignKey' => 'friend_id' 
    ) 
); 
+0

是的,它帮助,谢谢 – user648518 2011-05-03 18:51:13

+0

http://book.cakephp.org/view/1046/Multiple -relations到了 - 同型号 – user648518 2011-05-03 18:51:20