1

我正在建模一个社交网络风格的网站,人们可以在其中将其他人添加到他们的联系人列表中,我想将此关系建模为同一表用户上的 HABTM 关系,但根据http://book.cakephp.org /view/1044/hasAndBelongsToMany-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

请帮助,我怎样才能避免重复?

4

1 回答 1

2

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

在您的用户模型中,设置关系,分配一个显式的foreignKey 和associationForeignKey:

var $hasAndBelongsToMany = array(
    'Friend' => array(
        'joinTable' => 'users_users',
        'className' => 'User',
        'foreignKey' => 'user_id',
        'associationForeignKey' => 'friend_id'
    )
);
于 2011-05-03T16:54:38.477 回答