2

FacebookページからFQL経由でイベントを取得するアプリを開発しています。これらのページの所有者がページ プロファイルからこれらのイベントを作成するのではなく、自分のプロファイルからイベントを作成し、フィールド Venue としてイベントをページにリンクすることがあります (私が探しているページは公共の場所であるため)。

FQLまたはその他の手段を介して、特定のFacebookページIDを会場として持つすべてのイベントIDを取得することは可能ですか??

ページの所有者が次のコードを使用してページ プロファイルを介してイベントを挿入した場合にのみ、すべてのイベントを取得できるようになりました。

$fql    =   "SELECT eid, creator, name, pic, timezone, start_time, end_time, location, description 
            FROM event WHERE eid IN ( SELECT eid FROM event_member WHERE uid IN  ($clubsstring) )
            AND start_time > $today
            AND start_time < $nextweek
            ORDER BY start_time asc";

$param  =   array(
    'method'    => 'fql.query',
    'query'     => $fql,
    'callback'  => ''
);

$fqlResult   =   $facebook->api($param);

ありがとうルカ

4

2 に答える 2

1

確かに、会場に基づいて検索することはできますが、会場フィールドはインデックスに登録できないため、これは二次的な条件にすぎません。

つまり、最初にeid(テーブル内の唯一のインデックス可能なフィールド)に基づいて検索しEvent次に会場に基づいてそれらの結果をフィルタリングする必要があります。

問題は、会場フィールドが配列であり、その中のフィールドが常にそこにあるとは限らないことです。たとえば、1つのイベントでこれが会場として使用される場合があります。

"venue": {
    "id": VENUE_ID
}

しかし、別のものは次のようになります。

"venue": {
    "street": "", 
    "city": "", 
    "state": "", 
    "country": ""
}

次のようなもので、必要なものを取得できるはずです。

SELECT eid, creator, name, pic, timezone, start_time, end_time, location, description 
FROM event
WHERE 
    ((eid IN (SELECT eid FROM event_member WHERE uid IN ($clubsstring)))
    OR
    (eid IN (SELECT eid FROM event_member WHERE uid IN (OWNERS_IDS_STRING)))
    AND
    venue.id IN (VENUE_IDS_STRING))
    AND start_time > $today
    AND start_time < $nextweek
    ORDER BY start_time asc;

私はこのクエリをテストしていません。動作するように少し変更する必要があるかもしれません。また、以外の場所の別のフィールドを使用することもできますid

お役に立てれば。

于 2012-05-30T10:47:17.647 に答える
1

私はこれを使用しています、それは現在働いています。

{"eventos":"SELECT start_time, end_time, name, eid, pic,venue.id, location, creator, description 
FROM event WHERE eid IN  (SELECT eid FROM event_member WHERE uid IN (  SELECT uid2 FROM friend WHERE uid1=me() LIMIT 150) 
 OR uid = me() AND rsvp_status = 'attending') AND venue.id <>'' 
 AND location <> '' AND location <> '#data'","lugares":"SELECT latitude,longitude  
 FROM place WHERE page_id IN (SELECT venue.id FROM #eventos)"}
于 2012-07-13T13:49:06.833 に答える