如何在yii中设置与同一个表的自我关系

时间:2014-06-17 12:17:25

标签: php mysql yii

我正在使用Yii 1.x版本。

我在使用两个不同的模型与同一个表建立关系时遇到困难。我的情况是这样的。

  1. 有两个表,user和user_friend_list
  2. 每张桌子的两个不同型号用户& UserFriendList。
  3. 以下是我桌子的字段。

    用户: idfirstnamelastname
    UserFriendList: iduser_idfriend_user_id

    我想在两个模型之间建立关系,以便我可以获取任何用户的所有朋友信息。请建议我实现这一目标的最佳方法是什么?

    注意: User表存储用户信息。 用户朋友列表表存储用户的好友列表。

2 个答案:

答案 0 :(得分:0)

尝试 -

User模型中 -

'friends' => array(self::HAS_MANY, 'UserFriendList', 'user_id'),


UserFriendList模型中 -

'user' => array(self::BELONGS_TO, 'User', 'user_id'),

答案 1 :(得分:0)

两个表 - 用户和&朋友

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` varchar(50) NOT NULL,
  `name` varchar(100) NOT NULL,
  `email` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

CREATE TABLE IF NOT EXISTS `friend` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `friend_user_id` int(11) NOT NULL,
  `status` varchar(1) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  KEY `friend_user_id` (`friend_user_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

-

ALTER TABLE `friend`
  ADD CONSTRAINT `friend_ibfk_2` FOREIGN KEY (`friend_user_id`) REFERENCES `user` (`id`),
  ADD CONSTRAINT `friend_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`);

我的用户模型中的关系

return array(
        'friends' => array(self::HAS_MANY, 'Friend', 'friend_user_id'),
        'friends1' => array(self::HAS_MANY, 'Friend', 'user_id'),
);

和朋友模特

return array(
        'friendUser' => array(self::BELONGS_TO, 'User', 'friend_user_id'),
        'user' => array(self::BELONGS_TO, 'User', 'user_id'),
);

我希望这会有所帮助。我在yiiforum找到了它