带有左连接的cakePHP paginate会导致页面数量不正确

时间:2010-10-14 20:33:39

标签: cakephp pagination left-join

我遇到了cakePHP分页的问题,特别是当我进行左连接时。返回有6行,并且页数限制为3,它应该计算2页,但它计算3页,最后一页为空白。这是我传递给paginate的选项数组:

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
        )

)

为什么会发生这种情况?我不确定是否有任何其他方法可以在不使用连接的情况下获得我想要的结果,但我认为这是造成问题的原因。

任何建议将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

愚蠢的问题 - 在这种情况下,甚至不需要加入。没有连接就可以获得相同的结果,因为子查询可以自己进行评估。对于这个例子,没关系,但可能还有其他例子需要连接并且计数错误仍然存​​在。无论哪种方式,我的问题都解决了!