0

私は、Facebook のマルチクエリ FQL を介して次のことを達成しようとしています。私が「参加」しているすべてのファン ページ イベントのリストを取得します。

私は以下のロジックを持っており、以下の FQL ステートメントと同様のものを実装しようとしました。

  1. ファンページによって作成された、またはファンページから作成されたすべてのイベントのリストを取得します (特定の ID を使用)
  2. 参加しているすべての (ユーザー) イベントのリストを取得する
  3. event_member FQL テーブルの eid を照合します
  4. ID が一致し、rsvp_status が出席と等しい場合
  5. 表示結果。

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;
   }

引用符

何か案は?

4

3 に答える 3

1

それは非常に単純なタスクです:

SELECT eid FROM event WHERE creator = $fanpageID AND eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status = "attending")

$fanpageIDこれは、idを持つページによって作成/所有され、あなたが ( me()) のメンバーであり、ステータスが であるすべてのイベントの ID を返しますattending

編集
カウントを取得するためだけに、返された配列をループしていますか?! あなたは単に使用することができます:

$eventsAttendingcount = count($eventsAttendance);

また、一致するユーザーがアプリケーションを承認し、適切な許可を与えていることを確認してください。

于 2011-01-26T14:59:09.107 に答える
0

問題の内容がよくわかりません。FQL ステートメントを実行したところ、イベントのリストと RSVP ステータスが返されましたか?

別の注意として、events.getメソッドを使用しないでください。UserId を渡すと、イベント情報が表示されます。RSVP ステータスでフィルタリングできます。

確認したところ、events.get メソッドは非推奨になりつつあります。

イベントの出席者のリストを提供する新しい Graph API を使用する必要があります。

http://developers.facebook.com/docs/reference/api/event

を使用して出席者のリストを取得します

https://graph.facebook.com/EVENT_ID/attending

于 2011-01-26T11:24:09.730 に答える