2010-10-14 12 views
0

Je rencontre un problème avec la pagination de cakePHP, en particulier lorsque je fais une jointure à gauche. Il y a 6 lignes retournées, et avec une limite de pagination de 3, il devrait calculer 2 pages, mais il calcule 3 pages, la dernière page étant vide. Voici le tableau des options que je passe à paginer:pagination cakePHP avec une jointure à gauche provoque un nombre de pages incorrect

 
Array 
(
    [fields] => Array 
     (
      [0] => DISTINCT Video.id, Video.thumbnail_img, Video.title, 
        Video.description, Video.tags, Video.views, Video.date, 
        ((
         SELECT COUNT(Rating.id) 
         FROM ratings AS Rating 
         WHERE Rating.rating = 1 AND Rating.video_id = Video.id 
        ) - 
        (
         SELECT COUNT(Rating.id) 
         FROM ratings AS Rating 
         WHERE Rating.rating = 0 AND Rating.video_id = Video.id 
        ) 
        ) AS avgRating 
     ) 

    [joins] => Array 
     (
      [0] => Array 
       (
        [table] => ratings 
        [alias] => Rating 
        [type] => LEFT 
        [conditions] => Array 
         (
          [0] => Rating.video_id = Video.id 
         ) 

       ) 

     ) 

    [order] => Array 
     (
      [avgRating] => DESC 
     ) 

) 

Des idées pourquoi cela se passe-t-il? Je ne suis pas sûr d'un autre moyen d'obtenir les résultats que je veux sans utiliser la jointure, mais je parie que c'est ce qui cause le problème.

Toutes les suggestions seraient appréciées. Merci!

+0

pouvez-vous nous montrer les instructions SQL que CakePHP produit à partir de votre requête/combien avez-vous? Comment avez-vous appelé la fonction de pagination? –

Répondre

0

Problème stupide - dans ce cas, la jointure n'est même pas nécessaire. Les mêmes résultats sont obtenus sans la jointure, puisque les sous-requêtes peuvent être évaluées par elles-mêmes. Pour cet exemple, c'est correct, mais il peut y avoir d'autres exemples où une jointure est nécessaire et l'erreur de compte persiste. De toute façon, mon problème est résolu!

+0

Et mon problème n'est pas .. – Bryan