FQL:无法连接其中id为USERID_LINKID格式的表

时间:2012-07-29 02:14:19

标签: facebook-graph-api facebook-fql fql.multiquery

我通过php sdk运行以下FQL:

{
"posts" : "SELECT post_id, actor_id, message, type FROM stream WHERE type = '80' AND message != '' AND filter_key in (SELECT filter_key FROM stream_filter WHERE uid='588853265' AND type='newsfeed') AND is_hidden = 0 ORDER BY created_time DESC LIMIT 50", 

"actors" : "SELECT uid,name FROM user WHERE uid IN (SELECT actor_id FROM #posts)",

"links" : "SELECT owner, url FROM link WHERE link_id IN (SELECT post_id FROM #posts)"
}

我按照预期获得了帖子和演员的结果,但没有获得链接(结果为空)。我认为问题是链接表使用普通ID,但“stream”中的“posts”以以下格式显示ID:USERID_LINKID。

我玩过substr()和strlen()来让它运转起来没有运气。

1 个答案:

答案 0 :(得分:1)

似乎没有办法从流帖中获取link_id。您的查询是获取帖子的ID,但不是链接。

但是,我认为你不需要它。摆脱#links子查询,并将attachment添加到SELECT子查询中的#posts语句中。您可以在attachment->media->url获取链接网址。

另一个批评:您可能希望为#actors添加其他子查询。 actor_id表返回的stream可以是用户,页面或组。您的FQL仅解析用户。对于按组和页面发布的链接,您最终会得到未知ID。