Facebook - лучший способ сделать FQL «присоединиться» к Event и Event_member?
-
20-08-2019 - |
Вопрос
В приложении Facebook мне нужно получить события пользователя для диапазона дат и его статус RSVP для каждого события.
Я могу хорошо провести события пользователя, но в настоящее время я смотрю статус RSVP для каждого события по одному, и приложение выходит на работу для людей с большим количеством событий.
Я получаю события пользователя таким образом:
$fql = "SELECT eid, name, start_time, end_time
FROM event
WHERE eid IN (SELECT eid
FROM event_member
WHERE uid = $user)
AND start_time > '$timestamp'
ORDER BY start_time";
Эта часть работает нормально.
И вот как я получаю статус RSVP для каждого события, по одному:
$fql = "SELECT rsvp_status
FROM event_member
WHERE uid = $user
AND eid = '$event_id'";
Это также отлично работает на основе событий, но страница приложения разворачивается, когда у пользователя есть много событий, так как каждое событие нужно каждый раз просматривать.
С нормальным SQL я мог бы легко сделать это с присоединением, но присоединения не допускаются в FQL.
Одним из возможных решений является выполнение их партий, пройдя каждую возможность RSVP_STATUS, например, это:
$fql = "SELECT eid, name, start_time, end_time
FROM event
WHERE eid IN (SELECT eid
FROM event_member
WHERE uid = $user
and rsvp_status = 'attending')
AND start_time > '$timestamp'
ORDER BY start_time";
Это уменьшит количество вызовов FQL до количества RSVP_Possosbility (три я думаю), но в идеале я бы предпочел сделать это в одном вызове FQL.
Решение
Нет способа сделать присоединение, как вы можете использовать Fql.multiquery Чтобы ввести 4 запроса в один звонок. 4 запроса будут по 1 каждый для 4 возможные ответы на мероприятия: посещение, неуверенное, отклонено и не так.