Facebook的FQL查询

时间:2014-03-01 11:29:31

标签: php facebook facebook-fql

我使用

将我的所有朋友作为阵列
$graph_url = "https://api.facebook.com/method/fql.query?access_token=" . $access_token .
 "&query=SELECT+uid,name,work.position.name+FROM+user+WHERE+uid+IN+
 (SELECT+uid2+FROM+friend+WHERE+uid1+=+me())&format=json";

我想提出一个条件来取得那些工作职位名称为'dev'的朋友。我试过FQL喜欢

$graph_url = "https://api.facebook.com/method/fql.query?access_token=" . $access_token .
 "&query=SELECT+uid,name,work.position.name+FROM+user+WHERE+uid+IN+
(SELECT+uid2+FROM+friend+WHERE+uid1+=+me())+AND+strpos(work.position.name,'dev')>=0&format=json";

但它导致我的空阵列甚至其中一些满足条件。任何人都建议我正确的方法来解决这个问题。谢谢你提前。

2 个答案:

答案 0 :(得分:2)

其他几个人也试图实现这一点,见

https://stackoverflow.com/questions/17382739/how-to-use-strpos-in-fql-query

https://stackoverflow.com/questions/18115546/strpos-in-fql-query

我假设您不能在包含数组而不是对象的字段上使用strpos()(可以通过object.subobject.field引用)。

我怀疑的“证明”:如果您尝试搜索朋友当前位置(这是用户对象的子对象,而不是数组),它可以工作:

SELECT uid,name,current_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) and strpos(current_location.city, 'M') = 0

在那里,我搜索所有住在以“M”开头的城市的朋友。

最终,如果FQL无法解决您的问题,您还可以解析客户端的结果。

顺便说一句,我认为你应该为你的FQL查询使用另一个端点:

http://graph.facebook.com/fql?q=...

答案 1 :(得分:-1)

你可以使用strpos&在可转位字段的某些数据子集中较低。

在你的例子中,你没有可索引字段,所以你得到空数组。

SELECT uid,name,work.position.name  FROM user WHERE uid IN 
(SELECT uid2 FROM friend WHERE uid1 = me()) AND work.position.name 

这个fql语句给出了为work.position.name赋值的朋友列表,然后在这个json对象上应用条件。