#php #mysql #yii
#php #mysql #yii
Вопрос:
Я использую версию Yii 1.x.
Я застрял при настройке отношения с одной и той же таблицей, используя две разные модели. мой сценарий выглядит примерно так.
- Есть две таблицы: user и user_friend_list
- Две разные модели для каждой таблицы 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