在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_POSSIBILISIONS的数量(我认为三个),但理想情况下,我宁愿在一个FQL调用中进行。

有帮助吗?

解决方案

没有办法加入,但是您可以使用 fql.Multiquery 将您的4个查询分解为一个电话。 4个查询是每个查询。 4个可能的事件响应: :参加,不确定,拒绝和不恢复。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top