0

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 を使用していることだと思いますが、「ストリーム」からの「投稿」には USERID_LINKID の形式で ID が表示されます。

私は substr() と strlen() をいじって、うまく動かないようにしました。

4

1 に答える 1

1

link_idストリーム投稿からを取得する方法はないようです。クエリは投稿の ID を取得していますが、リンクは取得していません。

ただし、必要ないと思います。サブクエリを取り除き、サブクエリのステートメントに#links追加attachmentします。でリンク URL を取得できます。SELECT#postsattachment->media->url

もう 1 つの批判: のサブクエリを追加することをお勧めし#actorsます。actor_idテーブルから返される は、streamユーザー、ページ、またはグループです。FQL はユーザーのみを解決します。グループやページによって投稿されたリンクの ID が不明になります。

于 2012-07-29T14:43:40.137 に答える