Cakephp分页有多个订单条件

时间:2014-11-03 06:50:42

标签: mysql cakephp pagination

目前我有一个名为'用户'的表。使用像

这样的列
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'
        )    
      ); 

现在我想要的是,首次显示随机用户的视图,每次页面在页面第一次加载时刷新OR时​​都会有图像。其他拥有图像的用户跟随,然后是没有图像的用户。

此查询在phpmyadmin sql面板中正常工作。但我不知道如何为它编写cakephp paginate查询

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

如果您认为我错过了更多数据,请询问。我会在评论中写下来

2 个答案:

答案 0 :(得分:0)

您可以查看此答案SQL how to make null values come last when sorting ascending并尝试使用CakePHP条件进行更改。

答案 1 :(得分:0)

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

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

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