我使用
将我的所有朋友作为阵列$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";
但它导致我的空阵列甚至其中一些满足条件。任何人都建议我正确的方法来解决这个问题。谢谢你提前。
答案 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对象上应用条件。