当前位置:  开发笔记 > 数据库 > 正文

Facebook - 与事件和event_member进行FQL"加入"的最佳方式?

如何解决《Facebook-与事件和event_member进行FQL"加入"的最佳方式?》经验,为你挑选了1个好方法。

在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调用中执行此操作.



1> Nate..:

没有办法进行连接,但是您可以使用FQL.Multiquery将4个查询批量处理为单个调用.对于4种可能的事件响应,4个查询将分别为1 个:出席,不确定,拒绝和未回复.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有