【问题标题】:Cakephp pagination with more than one order condition具有多个订单条件的 Cakephp 分页
【发布时间】:2014-11-03 06:50:41
【问题描述】:

目前我有一个名为“用户”的表。像

这样的列
Id, name, image, is_active, etc, etc, created, modified

我正在设置一个分页,它会在点击下一个按钮(在视图中)时一一显示所有用户

此处并非所有用户都有图像。所以我的分页顺序是:首先显示有图像的用户。其次是没有图片的用户。

到目前为止我有这个

    $this->paginate = array(
      'limit' => 1,
      'conditions' => array(
        'User.is_active' => 0
        ),
      'order' => array(
        'User.image' => 'DESC'
        ),
      'group' => array(
        'User.id'
        )    
      ); 

我现在想要的是,每次页面刷新或第一次加载页面时,FIRST 显示具有图像的随机用户的视图。后面是其他有图片的用户,然后是没有图片的用户。

此查询在 phpmyadmin sql 面板中运行良好。但我不确定如何为它编写一个 cakephp 分页查询

select * User order by image<>' ' desc,rand()

如果您认为我缺少更多数据,请询问。我会写在cmets中

【问题讨论】:

    标签: mysql cakephp pagination


    【解决方案1】:

    你可以看看这个答案SQL how to make null values come last when sorting ascending 并尝试用 CakePHP 条件改变它。

    【讨论】:

      【解决方案2】:

      您可以在您的模型中设置。我相信这也适用于分页顺序。

          public $order = array(
              'ISNULL(Users.image) ASC',
              'RAND() * User.id'
          );
      

      但这会使所有用户随机化。我不知道您如何才能仅在第一条记录中显示具有订单字段的随机用户。我建议使用自定义函数,您可以在其中选择一个随机行并将其放在数组的顶部。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-05
        • 2020-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多