Понимание отношений Kohana ORM - PullRequest
1 голос
/ 28 марта 2011

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

У меня есть база данных с5 таблиц:

approved_submissions
   -submission_id
   -contents

favorites
   -user_id
   -submission_id

ratings
   -user_id
   -submission_id
   -rating

users
   -user_id

votes
   -user_id
   -submission_id
   -vote

Прямо сейчас, favorites, ratings и votes имеют первичный ключ, который состоит из каждого столбца в таблице, чтобы пользователь не выбрал один и тот же submission_id несколько раз, пользователь голосует за один и тот же submission_id несколько раз и т. Д. Я также считаю, что эти поля настраиваются с использованием внешних ключей, которые ссылаются на approved_submissions и users, чтобы предотвратить появление недопустимых данных в соответствующих полях.

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

Можете ли вы продемонстрировать, как я могу обновить голосование пользователя на submission_id?Пользователь удаляет любимый submission_id?Пользователь, меняющий свой рейтинг на конкретном submission_id?

Кроме того, нужно ли мне вносить изменения в структуру моей базы данных или все в порядке, как есть?

1 Ответ

1 голос
/ 29 марта 2011

Вы, вероятно, ищете has_many_through отношений.

Таким образом, чтобы добавить новую заявку, вы должны сделать что-то вроде

 $user->add('submissions', $submission);

и удалить

 $user->remove('submissions', $submission);

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

...