Имеет ли hasMany: through возможность индивидуального редактирования одного и того же элемента? - PullRequest
0 голосов
/ 09 августа 2011

Чтобы сформулировать вопрос, я являюсь дизайнером / разработчиком внешнего интерфейса и ищу несколько советов о том, как настроить мои модели. Я прочитал книгу Cake об ассоциациях, HABTM и hasMany, в частности, но все еще не совсем понял, что подходит для моих нужд.

Я создал приложение Cake со следующими моделями и простыми отношениями:

User hasMany Workout
User hasMany Shoe
Shoe hasMany Workout

Я хотел бы разрешить пользователям добавлять других пользователей в тренировку, поэтому User HABTM Workout. Добавление User2 к тренировке также создаст тренировку для User2.

I также хочет, чтобы User2 мог редактировать данные тренировки для себя, сохраняя связь (и данные User1). Например, Пользователь2 может указать свои собственные заметки или время для тренировки, отличное от заданного Пользователем 1.

Похоже, что ассоциация HABTM не разрешит часть подробностей, относящуюся к конкретному пользователю, но может ли многое из этого сделать? Могу ли я сделать что-то вроде этого:

User hasMany WorkoutDetail
Workout hasMany WorkoutDetail
User hasMany Shoe
Shoe hasMany Workout

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

спасибо

1 Ответ

1 голос
/ 09 августа 2011

Да, ваше второе решение будет работать хорошо, именно так я обычно делаю отношения HABTM, когда в объединяемой таблице хранится дополнительная информация.

User hasMany WorkoutDetail
Workout hasMany WorkoutDetail

Еще одна вещь, которую вы можете добавить, это

WorkoutDetail belongsTo User
WorkoutDetail belongsTo Workout

Таким образом, если вы запросите таблицу WorkoutDetail, вы получите вместе с ней информацию User и Workout.

И, как вы сказали, у каждого пользователя должна быть отдельная запись в таблице WorkoutDetail.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...