Facebook - 使用event and event_member进行FQL“加入”的最佳方法?
-
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_POSSIBILISIONS的数量(我认为三个),但理想情况下,我宁愿在一个FQL调用中进行。
解决方案
没有办法加入,但是您可以使用 fql.Multiquery 将您的4个查询分解为一个电话。 4个查询是每个查询。 4个可能的事件响应: :参加,不确定,拒绝和不恢复。
不隶属于 StackOverflow