最近我正在使用PHP处理Facebook批量请求。现在,我正在尝试获取在Facebook问题中选择选项的人的名字,但也获得他们选择的选项。使用FQL将此与简单查询的关系很难,因此我尝试将它们分开
使用此:
SELECT voter_id FROM question_option_votes WHERE option_id IN (SELECT id from question_option WHERE question_id = "...")
AND
SELECT uid, username, ... FROM user WHERE uid IN ({result=aliasOfTheLastRequest:$.data.*.voter_id)
但我一无所获!我知道使用批处理的请求限制是20。
$fql = 'method/fql.query?query=SELECT voter_id FROM question_option_votes WHERE option_id IN (SELECT id from question_option WHERE question_id = "252339054834206") LIMIT 20';
$batch = array(
array(
'method' => 'GET',
'name' => 'getfriends',
'relative_url' => str_replace(' ', '+', $fql),
'omit_response_on_success' => false // Also changed to true
),
array(
'method' => 'GET',
'relative_url' => 'method/fql.query?query=SELECT+uid,+username,... FROM+user+WHERE+uid+IN+({result=aliasOfTheLastRequest:$.data.*.voter_id) ' // I also tried this '?ids={result=getfriends:$.data.*.voter_id}'
)
);
$data = $this->facebook->api('/?batch=' . json_encode($batch) . '&access_token=' . $access_token, 'POST');
当我打印$ data时,我得到了第一个查询的数据结果,但没有得到第二个查询的数据结果。第二个我得到了空阵;并使用另一个选项:“无法指定空标识符”;所以我没有将第一个查询的结果输入第二个查询。
我做错了吗?
答案 0 :(得分:1)
只需将$.data.*.voter_id
替换为$.*.voter_id
(fql.query
不会返回data
个对象,只需body
)