私は、Facebook のマルチクエリ FQL を介して次のことを達成しようとしています。私が「参加」しているすべてのファン ページ イベントのリストを取得します。
私は以下のロジックを持っており、以下の FQL ステートメントと同様のものを実装しようとしました。
- ファンページによって作成された、またはファンページから作成されたすべてのイベントのリストを取得します (特定の ID を使用)
- 参加しているすべての (ユーザー) イベントのリストを取得する
- event_member FQL テーブルの eid を照合します
- ID が一致し、rsvp_status が出席と等しい場合
- 表示結果。
FQL マルチ
{"query1":"SELECT eid FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid =$fanpageID)","query2":"SELECT rsvp_status FROM event_member WHERE uid = $uidAND eid IN (SELECT eid FROM #query1)" }
ステートメントが間違っていることは知っていますが、これを行うのに苦労しています。PHPコードで非常に乱雑な一連のforeachループを使用して、Graph APIを介してこれを実現しました。
単一のマルチクエリ FQL ステートメントを使用すると、はるかに効率的になります。
どんな提案も素晴らしいでしょう。
編集
現在問題になっているのは、ifaour の FQL ステートメントが FQL クエリ コンソール (結果を返す) 内で機能することですが、次のコマンドを実行すると空の配列が返されます。
ステートメントを分析すると ( SELECT eid FROM event WHERE Creator =$fanPageID) 、FQL コンソールはその eid をインデックス不可で強調表示します。
ここに私のPHPがあります
関数 usersEventsPoints($uid, $facebook, $fanpageID){
$events = "SELECT eid FROM event WHERE creator=$fanpageID AND eid
IN (SELECT eid FROM event_member WHERE uid=$uid AND rsvp_status = \"attending\")";
$eventsAttendance = $facebook->api(array( 'method' => 'fql.query', 'query' =>$events, )); $eventsAttendingcount = 0;
foreach ($eventsAttendance as $eventsAttendanceFetch) {
if($eventsAttendanceFetch['eid'] == true){ $eventsAttendingcount++; } } return $eventsAttendingcount; }
引用符
何か案は?