我正在创建一个活动列表网站,例如 eventbrite.com 。有组织者可以创建可以注册活动的活动和用户。
用户需要通过Facebook登录系统。在这种情况下,我会存储他们的facebook_id。
我的问题是,如何获得特定用户的朋友列表(参加活动的朋友)并在活动下方显示?
其实我对此有一个想法:
解决方案I
当登录用户参加活动时,我可以使用活动ID保存他的facebook_id。
活动参与者表
facebook_id | ----活动_id
42343453424 | ---- 08
34534534544 | ---- 08
23424243224 | ---- 10
当另一个用户登录时,我可以让他的朋友facebook_ids并尝试与之匹配 活动参与者表。
例:
user_friend_list = [42343453424,23424243224,4345345345,245345433,... etc]
我必须从第一个用户那里获得user_friend_list数组(42343453424)并在事件参与者表和第二个用户(23424243224)以及第三个用户等搜索。
此方法需要运行大量循环和查询。这将导致网站出现大量延迟。
有人可以建议我更好地解决这个问题吗?
提前致谢!
-PS
在eventbrite.com和eventful.com中,有一个Facebook应用程序可以完成这项工作。如何创建这样的Facebook图书应用程序来完成这项工作。
如果我的主页上有多个活动,并且我想在用户登录后在每个活动下方显示参展者列表。这可以顺利完成吗?
答案 0 :(得分:0)
为什么不为1个查询中的事件带回所有与会者并将它们存储在数组中,而不是运行所有这些单独的数据库命中。然后获取所有用户朋友并将其存储在另一个阵列中。最后遍历与会者列表并使用in_array方法检查当前与会者是否在好友数组中。然后你可以将它们存储在第三个数组中,这是所有匹配的朋友
e.g
$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.