2009-06-25 14 views
14

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.

Odpowiedz

7

Nie ma sposobu na dołączenie, ale można użyć FQL.Multiquery, aby wsadowe 4 zapytania do jednego połączenia. Cztery zapytania to 1 dla każdego: 4 possible event responses: zwracanie uwagi, niepewność, odrzucenie i brak odpowiedzi.