sql排序:用desc对块进行排序,但每个块在其自身内按asc进行排序

unguejic  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(566)

我有一个包含消息及其发布日期的sql表。
我们把这些信息称为m1,m2。。。m99型。m1是最新的消息。
我想以whatsapp的方式显示它们(我使用的是yii1.1框架):最新的消息m1在底部,上面是第二个最新的m2消息,等等。
但是我想按固定数量的消息块(比如说5条)显示它们,如果请求的话,我将加载上一条消息。因此,在加载页面时,您应该看到:
(加载更多按钮)
m5级
m4级
立方米
平方米
m1级
单击“加载更多”按钮时,我将从上到下:
(加载更多按钮)/m10/m9/m8/m7/m6/m5/m4/m3/m2/m1
我尝试在yii上使用activedataprovider来实现这一点,但是为此,我需要像这样对数据进行排序:
m5、m4、m3、m2、m1、m10、m9、m8、m7、m6、m15、m14、m13、m12、m11等。
我不知道如何实现这种排序,甚至使用限制和偏移。
如果有人能帮我,我会很高兴的,谢谢!
编辑:这是我正在使用的activedataprovider

public function getMessagesDataProvider()
{
    $dataProvider = new CActiveDataProvider(Message::model(), array(
        'criteria' => array(
            'condition' => 't.inquiry_thread_id = :threadId',
            'params' => array(':threadId' => $this->id),
            'order' => 't.created_at DESC',
        ),
        'pagination' => array('pageSize' => 5, 'pageVar' => 'page'),
    ));
    $dataProvider->getData();
}

在我看来

<?php $this->widget('\common\widgets\ListView', array(
    'dataProvider' => $messagesDataProvider,
    'pager' => array(
        'class' => '\common\widgets\LoadMorePager',
        'canBeReloadedByAjax' => true,
    ),
    'template' => '{pager}{items}',
    'itemView' => '/message/_messageItem',
    'itemsCssClass' => 'pager-container',
    'pagerCssClass' => 'inquiry-message-button',
)); ?>
amrnrhlw

amrnrhlw1#

你可以用 setData() 以及 getData() 要反转数据提供程序中项目的顺序,请执行以下操作:

$dataProvider->setData(array_reverse($dataProvider->getData()));
``` `$dataProvider->getData()` 将按相反的顺序返回页面项。

相关问题