0

我正在创建一个事件列表网站,例如eventbrite.com。有可以创建活动的组织者和可以注册活动的用户。

用户需要通过 Facebook 登录系统。在这种情况下,我可以存储他们的 facebook_id。

我的问题是,如何获取特定用户的好友列表(参加活动的好友)并显示在活动下方?

实际上我对此有一个想法:

解决方案 I
当一个登录的用户参加一个活动时,我可以用活动 ID 保存他的 facebook_id。

活动参加者表
facebook_id | ---- 事件_id
42343453424 | ---- 08
34534534544 | ---- 08
23424243224 | ---- 10

当另一个用户登录时,我可以获取他的朋友 facebook_ids 并尝试与 Event Attenders 表匹配。

示例:
user_friend_list = [ 42343453424 , 23424243224 , 4345345345 , 245345433 ,...等 ]

我必须从 user_friend_list 数组 (42343453424) 中获取第一个用户并在Event Attenders 表中搜索,第二个用户 (23424243224) 和第三个用户以此类推。

此方法需要运行大量循环和查询。这将导致网站的巨大延迟。

谁能建议我这样做的更好解决方案?

提前致谢!

-PS

  1. 在 eventbrite.com 和 eventful.com 中,有一个 Facebook 应用程序可以完成这项工作。如何创建这样的 Facebook 图书应用程序来完成这项工作。

  2. 如果我的主页上有多个活动,并且我想在用户登录后在每个活动下方显示参加者列表。这可以顺利进行吗?

4

1 回答 1

0

与其运行所有这些单独的数据库命中,不如在 1 个查询中带回一个事件的所有参与者并将它们存储在一个数组中。然后获取所有用户的朋友并将它们存储在另一个数组中。最后遍历参加者列表并使用 in_array 方法检查当前参加者是否在朋友数组中。然后你可以将它们存储在第三个数组中,即所有匹配的朋友

例如

 $matching = array();
 $attending = array(); // This is populated from your database
 $friends = array(); // This would be populated from their facebook friendlist

 $foreach($attending as $attendee){
       if(in_array($attendee, $friends)){
            // This attendee is present in their friends list so add them to matching
            $matching[] = $attendee;
       }
 }

 //Loop through matching to show all the friends who are attending.
于 2012-08-17T06:33:57.047 回答