как настроить самоотношение с той же таблицей в yii

#php #mysql #yii

#php #mysql #yii

Вопрос:

Я использую версию Yii 1.x.

Я застрял при настройке отношения с одной и той же таблицей, используя две разные модели. мой сценарий выглядит примерно так.

  1. Есть две таблицы: user и user_friend_list
  2. Две разные модели для каждой таблицы User amp; UserFriendList.

Ниже приведены поля для моей таблицы.

Пользователь: id , firstname , lastname .
Список друзей пользователя: id , user_id , friend_user_id

Я хочу настроить связь между двумя моделями, чтобы я мог получать всю информацию о друзьях любого пользователя. Пожалуйста, подскажите мне, какой наилучший подход для достижения этой цели???

Примечание: В таблице User хранится информация о пользователе. Таблица списка друзей пользователя хранит список друзей пользователя.

Ответ №1:

Попробуйте —

В User модели —

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

В UserFriendList модели —

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

Комментарии:

1. Спасибо за ваше предложение. мое точное требование было найдено здесь .. bit.ly/1lCmDWz

Ответ №2:

Две таблицы — пользователь и друзья

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ `пользователя` (
 `id` int(11) NOT NULL АВТО_ИНКРЕМЕНТ,
`имя пользователя` varchar(20) NOT NULL,
`пароль` varchar(50) NOT NULL,
`имя` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (`id`)
) ДВИЖОК = КОДИРОВКА InnoDB ПО УМОЛЧАНИЮ=latin1 АВТО_ИНКРЕМЕНТ = 5 ;

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ `друга` (
 `id` int(11) NOT NULL АВТО_ИНКРЕМЕНТ,
`user_id` int(11) NOT NULL,
`friend_user_id` int(11) NOT NULL,
`status` varchar(1) NOT NULL,
ПЕРВИЧНЫЙ КЛЮЧ (`id`),
 КЛЮЧ `user_id` (`user_id`),
 КЛЮЧ `friend_user_id` (`friend_user_id`)
) ДВИЖОК = КОДИРОВКА InnoDB ПО УМОЛЧАНИЮ=latin1 АВТО_ИНКРЕМЕНТ =7 ;

ИЗМЕНИТЬ ТАБЛИЦУ `friend`
 ДОБАВЬТЕ ОГРАНИЧЕНИЕ `friend_ibfk_2` ВНЕШНЕГО КЛЮЧА (`friend_user_id`) ССЫЛАЕТСЯ НА `user` (`id`),
ДОБАВЛЯЕТ ОГРАНИЧЕНИЕ `friend_ibfk_1`, ВНЕШНИЙ КЛЮЧ (`user_id`) ССЫЛКИ `user` (`id`);

Отношения, которые у меня есть в моей пользовательской модели

возвращает массив(
'friends' => array(self::HAS_MANY, 'Friend', 'friend_user_id'),
'friends1' => array(self::HAS_MANY, 'Friend', 'user_id'),
);

И модель друга

возвращает массив (
'friendUser' => array(self::BELONGS_TO, 'User', 'friend_user_id'),
'user' => array(self:: BELONGS_TO, 'User', 'user_id'),
);

Надеюсь, это поможет. Я нашел это на yiiforum