2010-07-28 4 views

Répondre

2

S'IL VOUS PLAÎT NOTE: Je ne l'ai jamais joué avec FQL avant, mais j'ai besoin cette solution exacte hier, donc je lui ai donné un aller!

Essayez d'ajouter des références à « like_info » dans la première ligne dans la réponse précédente (peut-être like_info est nouveau puisque vous avez demandé cela?):

$fql = "SELECT like_info, object_id,src_small,link FROM photo WHERE aid = '2389563453799923709' ORDER BY like_info created DESC"; 
     $param = array(
      'method' => 'fql.query', 
      'query'  => $fql, 
      'callback' => '' 
     ); 

     $photos = $facebook->api($param); 

Cela pourrait bien vous donner des réponses retournées dans l'ordre de plus de moins aimé. Au moins, cela a fonctionné pour moi! :)

+0

Génial! On dirait que c'est nouveau: https://developers.facebook.com/blog/post/2012/02/29/platform-updates--operation-developer-love/. En outre, il semble que vous devriez commander par "like_info.like_count", juste pour être plus explicite. – ajbeaven

1

S'il vous plaît noter: Cette solution est ne nécessitent plus que like_info a été ajouté à la photo


Alors, je devine que c'est impossible de le faire bien? Voici la solution laide:

$fql = "SELECT object_id,src_small,link FROM photo WHERE aid = '2389563453799923709' ORDER BY created DESC"; 
     $param = array(
      'method' => 'fql.query', 
      'query'  => $fql, 
      'callback' => '' 
     ); 

     $photos = $facebook->api($param); 

     if (count($photos) > 0) { 
      for ($i = 0; $i < count($photos); $i++) { 
       $objectId = $photos[$i]['object_id']; 
       $like_count = $facebook->api('/'.$objectId.'/likes'); 
       $photos[$i]['likes'] = count($like_count['data']); 
      } 
     } 

     function cmp($a, $b) { 
      if ($a['likes'] == $b['likes']) 
       return 0; 
      return $a['likes'] > $b['likes'] ? -1 : 1; 
     } 

     usort($photos, 'cmp');