W aplikacji na Facebooku potrzebuję uzyskać informacje o zdarzeniach użytkownika dla zakresu dat i statusu jego rsvp dla każdego wydarzenia.Facebook - najlepszy sposób, aby FQL "dołączyć" do eventu i event_member?
Mogę sprawić, aby wydarzenia użytkownika były w porządku, ale w tej chwili sprawdzam status rsvp dla każdego zdarzenia pojedynczo, a aplikacja kończy się dla osób z dużą liczbą zdarzeń.
Dostaję wydarzenia użytkownika w ten sposób:
$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";
Ta część pracuje bez zarzutu.
A oto jak Dostaję status RSVP dla każdego zdarzenia, po jednym na raz:
$fql = "SELECT rsvp_status
FROM event_member
WHERE uid = $user
AND eid = '$event_id'";
To również działa dobrze na zasadzie wydarzenie-po-wypadku, ale czasy strony App kiedy użytkownik ma wiele zdarzeń, ponieważ każde zdarzenie musi być każdorazowo sprawdzane.
Z normalnym SQL, mógłbym to zrobić z łatwością, ale sprzężenia nie są dozwolone w FQL.
Możliwym rozwiązaniem jest zrobić je w partii poprzez zapętlenie poprzez każdego możliwość rsvp_status, tak:
$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";
byłoby to zmniejszyć liczbę FQL wzywa w dół do liczby rsvp_possibilities (trzy chyba), ale najlepiej wolałbym to zrobić w jednym wywołaniu FQL.