当进行查询以获取事件详细信息时,我似乎在结果集中获取了venue.name 而不是venue.id。表结构是否发生了未经通知的更改,或者我做错了什么。 Graph API Explorer 提供了venue.id,但是当我在自己的网站中通过 PHP SDK 使用 FQL 时,它是我得到的venue.name。
代码如下:
$fql='{
"event_info": "SELECT name,description, pic_small,pic_big, eid,venue,location FROM event WHERE eid ='.$_GET['id'].'",
"event_venue":"SELECT name, username, page_id, location FROM page WHERE name IN (SELECT venue.id FROM #event_info)"
}';
$setup = array(
'method' => 'fql.multiquery',
'queries' => $fql,
'callback' => ''
);
$result = $facebook->api($setup);
这会导致“event_venue”结果集为空。
这是转储:
Array
(
[0] => Array
(
[name] => event_info
[fql_result_set] => Array
(
[0] => Array
(
[eid] => 410351692336116
[venue] => Array
(
[name] => Boothill
)
[location] => Boothill
)
)
)
[1] => Array
(
[name] => event_venue
[fql_result_set] => Array
(
)
)
)
最佳答案
如果我测试这个查询
SELECT name,description, pic_small,pic_big, eid,venue,location
FROM event WHERE eid ='410351692336116'
使用 Graph API 资源管理器中的 FQL 选项卡 (!),我明白了
"venue": {
"id": 126049334121592
}
而不是 field 名称。
并执行像您一样的多重查询,第二个查询是
"event_venue":"SELECT name, username, page_id, location FROM page
WHERE page_id IN (SELECT venue.id FROM #event_info)"
我也在获取 field 信息。
如果您不使用 $setup 数组进行查询,请检查是否会得到不同的结果
'method' => 'fql.multiquery',
但只是
$facebook->api('/fql?q='.urlencode('{ "event_info": "…", "event_venue": "… FROM page
WHERE page_id IN (SELECT venue.id FROM #event_info)" }'));
相反?
关于facebook-php-sdk - FQL : query for event table returns venue. 名称而不是 field .id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11858973/