【问题标题】:CAKEPHP Group by problem in paginateCAKEPHP 按分页中的问题分组
【发布时间】:2011-10-11 14:03:37
【问题描述】:

CAKEPHP 在分页中按问题分组..

这是我的表结构

 Friends Table
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user1_id` int(11) NOT NULL DEFAULT '0',--> UserFrom
  `user2_id` int(11) NOT NULL DEFAULT '0',---> UserTo

我需要获取一个用户的所有唯一记录,他的 user1_id = 100

user2_id 中有很多重复值。我需要获得独特的价值 当我尝试这段代码时,它只返回前 12 个值(根据限制)。 如果我逐行评论该组,则所有记录都将显示(包括重复值)

$this->paginate = array(
                    'conditions' => $conditions,
        'contain'=>array(
            'UserFrom'=>array(
                'fields'=>array(
                   'UserFrom.id',
                   'UserFrom.first_name',
                   'UserFrom.last_name',
                ),
             ),
             'UserTo'=>array(
                'fields'=>array(
                    'UserTo.id',
                    'UserTo.first_name',
                    'UserTo.last_name',
                    )
             )
            ),'limit' => 12,
            'order' => array('Friend.id' => 'desc'),
            'recursive'=>0,
            'fields'=>array('DISTINCT Friend.user2_id','Friend.*'),
            'group'=>array('UserTo.id'),
            );

这是我在那个页面上的 sql 查询

SELECT COUNT(*) AS count FROM friends AS Friend LEFT JOIN users AS UserTo ON (Friend.user2_id = UserTo.@987654331IN@) 987654332@ AS UserFrom ON (Friend.user1_id = UserFrom.id) 其中UserFrom.nick_name = 'shyam' 和 Friend.@987654 朋友UserTo.id

选择不同的Friend.user2_idFriend.*,UserTo.idUserTo.first_nameUserTo.last_name@3.987654352@@9876545453 ,UserTo.name,UserTo.icon_medium,UserTo.icon_big,UserFrom.id,UserFrom.@987654365.@,@987654365.@,@987654365.UserFrom 987654368 @,UserFrom 987654370 friends Friend leg join join users AS UserTo On(user2_id 987654377 UserTo 987654377 @)左加入users AS UserFrom ON (Friend.user1_id = UserFrom.id) 其中UserFrom.nick_name = 'shyam' AND Friend =.@9867 GROUP BY UserTo.id ORDER BY Friend.id desc LIMIT 12

1.First count查询正确返回count 2.Second查询如果我限制它不能正常工作。即我的表中有 144 条记录,我需要每页显示 12 条记录。如果我使用分组依据和限制,则只有第一页出现

【问题讨论】:

  • 您应该将 SQL 查询转储添加到问题中(echo $this->element('sql_dump') 在您看来)
  • 是添加了 sql 转储。请帮我找到解决办法
  • “我需要每页显示 12 个。如果我使用 group by 和 limit,只有第一页出现”:我不明白你有什么问题(??)
  • 当我使用 group by 并限制它只显示前 12 条记录.. 所以分页不会到来。我需要一个解决方案来获得具有分页选项的唯一记录

标签: cakephp cakephp-1.3


【解决方案1】:

您应该有DISTINCT GROUP BY,而不是两者 - 它们相互重复,可能会导致您的查询出现问题。删除其中一个并重试。

注意:如果您想手动使用$this->paginate() 请求第一个以外的页面,请将带有页码的'page' 参数添加到您的$this->paginate 数组中,例如这个:

$this->paginate = array_merge($this->paginate, array('page' => $pageNumber);

但是,通常您不会想要这样做,因为只要您在视图中使用分页控件,分页器就会自动执行此操作(通过 URL 参数将 page 变量传递给您的操作) (见http://book.cakephp.org/view/1233/Pagination-in-Views)。

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2013-03-26
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多