FQL:从其场地字段中搜索事件

时间:2012-05-30 08:53:33

标签: facebook events facebook-graph-api facebook-fql

我正在开发一个应用程序,通过Facebook页面的FQL检索事件。 有时这些页面的所有者不会从页面配置文件创建这些事件,而是从他们自己的配置文件创建这些事件,只是将事件链接到页面作为字段Venue(因为我正在寻找的页面是公共场所)< / p>

是否可以通过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);

感谢 卢卡

2 个答案:

答案 0 :(得分:1)

嗯,你确实可以根据场地进行搜索,但这只是次要条件,因为场地区域不可转位。

这意味着您首先 基于eid(Event表中唯一的可索引字段)进行搜索,然后根据场地过滤这些结果。

问题是场地字段是一个数组,其中的字段并不总是存在,例如一个事件可能将其作为场地:

"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以外的其他场地。

希望这有帮助。

答案 1 :(得分: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)"}