質問

FacebookのMultiquery FQLを介して以下を達成しようとしています。「参加している」すべてのファンページイベントのリストを取得しています。

以下のロジックがあり、以下のFQLステートメントで同様のものを実装しようとしました。

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

FQLマルチ

{"query1": "eid from eid in eid in(event_member from uid = $ fanpageidを選択)、" query2 ":" event_memberからrsvp_statusを選択するuid = $ uidand eid in(select eid from#query1) "" }

私は声明が間違っていることを知っていますが、私はこれをやろうとするのに苦労しています。 PHPコードで非常に乱雑なforeachループセットを使用して、グラフAPIを介してこれを達成しました。

単一のマルチキーFQLステートメントを使用すると、はるかに効率的です。

どんな提案でも素晴らしいでしょう。

編集

問題がある問題は、IfaourのFQLステートメントがFQLクエリコンソール内で動作する(結果を返す)ですが、次の実行時に空の配列が返されます。

ステートメントを(creator = $ fanpageidからイベントからEidを選択してください)に分析すると、FQLコンソールはeidがインデックス不可であることを強調します。

これが私のPHPです

function userseventspoints($ uid、$ facebook、$ fanpageid){

        $events = "SELECT eid FROM event WHERE creator=$fanpageID AND eid

in(event_memberからeidを選択します。ここで、uid = $ uidおよびrsvp_status = "Anterding ") ";

        $eventsAttendance = $facebook->api(array(
              'method' => 'fql.query',
              'query' =>$events, ));

        $eventsAttendingcount = 0;

foreach($ eventyattendance as $ eventsattendancefetch){

    if($eventsAttendanceFetch['eid'] == true){
                $eventsAttendingcount++;
            }
        }
        return $eventsAttendingcount;
   }

BlockQuote

何か案は?

役に立ちましたか?

解決

それは非常に簡単な作業です:

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

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

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

$eventsAttendingcount = count($eventsAttendance);

また、あなたが一致しているユーザーがあなたのアプリケーションを承認し、あなたに正しい許可を与えていることを確認してください!

他のヒント

私は問題が何であるかを理解していません - 私はあなたのFQLステートメントを実行し、それがイベントのリストを返してからRSVPステータスを返しますか?

別のメモでは、使用してみませんか events.get 方法。ユーザーIDを渡すと、イベント情報が表示されます。 RSVPステータスでフィルタリングできます。

チェックして、events.getメソッドは非推奨の過程にあります。

イベントの参加者のリストを提供する新しいグラフAPIを使用する必要があります。

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

使用して参加者のリストを取得します

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

イベントが設定されているFacebookログユーザーの次の10のイベントを取得したい場合 attending 次に、このような迅速なクエリを作成できます。

let graphPath = "/me/events?limit=10&type=attending&since=now"
let params = ["fields": "id, name, category, start_time, end_time, timezone, updated_time, type, attending_count, owner, place"]

let request = GraphRequest(graphPath: graphPath, parameters: params, accessToken: accessToken, httpMethod: .GET, apiVersion: apiVersion)
request.start {}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top