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

Я исследую, как правильно построить систему повторяющихся событий, которая позволит получать «пользовательские» данные для каждого повторяющегося события. Скажем, у меня есть событие, которое я собираюсь повторять каждый четверг. Затем я хочу разрешить пользователям каждого события сообщать, участвуют ли они в этом конкретном событии; приглашать пользователей на определенное событие в повторяющуюся дату; иметь «стену постов» на каждую повторяющуюся дату события и т. д. Или даже сказать, что один из повторяющихся событий будет иметь другое время окончания.

Лучшее, что я нашел на данный момент при создании повторяющихся событий, это: Календарь повторяющихся / повторяющихся событий — лучший способ хранения — конкретно этот ответ: https://stackoverflow.com/a/16659802/2118665

Однако во всех приведенных выше примерах каждое событие сохраняется и имеет одинаковый «event_id» на каждую дату. Это делает более или менее невозможным хранение конкретной информации о событии, скажем, трети повторяющихся событий.

3

Решение

Две таблицы из примера отлично подойдут для заполнения календаря и обработки повторяющихся событий.

Events Table
ID    NAME
1     Sample Event
2     Another Event

Events Meta Table
ID    event_id      meta_key           meta_value     start_time     end_time
1     1             repeat_start       1299132000     5:00 pm        7:00 pm
2     1             repeat_interval_1  432000

Я добавил время начала и окончания таблицы из примера.

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

Participants Table
event_id     date_time               user_id
1            2015-10-29 00:00:01     1
1            2015-10-29 00:00:01     2
1            2015-10-29 00:00:01     3

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

Event Details
event_id     date_time              start_time     end_time
1            2015-10-29 00:00:01    5:00 pm        7:30 pm

Это должно быть хорошим началом, вам нужно будет уточнить его, чтобы быть более конкретным для ваших нужд.

0

Другие решения

Других решений пока нет …