Самореферентные отношения с подписчиками|друзьями пользователей

Для связи между пользователями была создана таблица вида.

sql
CREATE TABLE `friends`(
 `from` INT NOT NULL,
 `to` INT NOT NULL,
 UNIQUE INDEX(`from`, `to`)
 );

Как вы знаете, поля from и to являются ключами user_id из таблицы users.

Я использую Kohana 3.09 с модулем по умолчанию Auth.

Вопрос в том...

*Как сделать функциональность ORM вокруг отношений пользователей с (по умолчанию) классом Model_User?*

Есть ли какая-нибудь игла для создания дополнительного класса или, возможно, у меня были некоторые ошибки с отношениями one_to_many trouth и many_to_many trouth, потому что это не сработало. Пожалуйста помоги. Мои наилучшие пожелания.


person lazycommit    schedule 13.01.2011    source источник


Ответы (1)


Вы должны проверить этот раздел документации:

http://kohanaframework.org/guide/orm/relationships#hasmany

Вам понадобится что-то подобное в вашем пользовательском классе

protected $_has_many = array(
    'friends' => array(
        'model' => 'user',
        'through' => 'friends',
        'far_key' => 'from',
        'foreign_key' => 'to',
    )
);

Эти параметры используются в этой части исходного кода.

person Lethargy    schedule 26.01.2011
comment
сегодня хорошо протестирую. потому что я уже прошел такой тест, и он не дал мне желаемого результата. ты, увидишь - person lazycommit; 27.01.2011
comment
Если это не сработает, посмотрите, сможете ли вы узнать, какой SQL-запрос он использовал, это укажет вам правильное направление. - person Lethargy; 27.01.2011
comment
@ Летаргия, я считаю, что это должно быть far_key, а не far-key - person Zahymaka; 28.01.2011
comment
Как я могу создать FOREIGN_KEY, который удаляет все отношения при удалении пользователя? - person sandelius; 14.04.2011
comment
Это больше вопрос SQL, чем вопрос Kohana. Я предлагаю погуглить или опубликовать свой собственный вопрос. - person Lethargy; 28.04.2011