2014-03-01 129 views
1

荫拿走我所有的朋友们使用FQL查询为Facebook

$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'.I曾试图用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

这已经尝试通过其他几个人被实现为好,看到

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=... 
+0

就像我写的那样,没有任何afaik,并建议你解析结果在你身边! – Tobi

+0

意味着获取所有数据,然后需要搜索数组.. ..? – Gautam3164

+0

是的,您需要遍历所有用户,并在用户级别通过“work”数组在“position.name”字段中搜索“dev”。 – Tobi

-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对象上应用条件的好友列表。