Facebook - أفضل طريقة للقيام بـ FQL "الانضمام" مع Event و Event_Member؟

StackOverflow https://stackoverflow.com/questions/1045842

  •  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_Possibilities (ثلاثة على ما أعتقد) ، ولكن من الناحية المثالية ، أفضل القيام بذلك في مكالمة FQL واحدة.

هل كانت مفيدة؟

المحلول

ليست هناك طريقة للانضمام ولكن يمكنك استخدامها fql.multiquery لدُعّد استفساراتك الأربعة في مكالمة واحدة. سيكون الاستعلامات الأربعة 1 لكل منهما 4 ردود الأحداث المحتملة: حضور ، غير متأكد ، رفض ، و not_replied.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top