1

私は、人々が連絡先リストに他の人々を含めることができるソーシャルネットワーキングスタイルのWebサイトをモデル化していました。この関係を、同じテーブルユーザーの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の3つのフィールドでをid定義します。user_idfriend_id

Userモデルで、関係を設定し、明示的なforeignKeyとassociationForeignKeyを割り当てます。

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