2014-03-01 178 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對象上應用條件的好友列表。