Mysql SQL排序:使用DESC对块进行排序-但每个块在自身内部按ASC进行排序
我有一个包含消息及其发布日期的SQL表 让我们把这些消息称为M1,M2。。。M99。M1是最新的消息 我想以whatsapp的方式显示它们我正在使用Yii 1.1框架: 最新消息M1位于底部,其上方是第二条最新消息M2,以此类推 但我想按固定数量的消息块显示它们,比如说5条,如果请求,我将加载上一条消息。因此,在加载页面时,您应该看到: 加载更多按钮 M5 M4 M3 平方米 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等 我不知道如何实现这种排序,即使使用限制和偏移 如果有人能帮我,我会很高兴的,谢谢 编辑: 这是我正在使用的ActiveDataProviderMysql SQL排序:使用DESC对块进行排序-但每个块在自身内部按ASC进行排序,mysql,sql,yii,cactivedataprovider,Mysql,Sql,Yii,Cactivedataprovider,我有一个包含消息及其发布日期的SQL表 让我们把这些消息称为M1,M2。。。M99。M1是最新的消息 我想以whatsapp的方式显示它们我正在使用Yii 1.1框架: 最新消息M1位于底部,其上方是第二条最新消息M2,以此类推 但我想按固定数量的消息块显示它们,比如说5条,如果请求,我将加载上一条消息。因此,在加载页面时,您应该看到: 加载更多按钮 M5 M4 M3 平方米 M1 单击“加载更多”按钮一次后,我将从上到下: 加载更多按钮/M10/M9/M8/M7/M6/M5/M4/M3/M2/
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',
)); ?>
您可以使用和反转数据提供程序中项目的顺序:
$dataProvider->setData(array_reverse($dataProvider->getData()));
$dataProvider->getData将以相反的顺序返回页面项目。为什么您的数据不能像/M10/M9/M8/M7/M6/M5/M4/M3/M2/M1?为什么在M5、M4、M3、M2、M1、M10、M9、M8、M7、M6、M15、M14、M13、M12、M11中需要它?按描述排序是否足够?Yii活动记录按顺序加载数据。因此,如果我有M10/M9/M8/M7/M6/M5/M4/M3/M2/M1,那么它将显示M10/M9/M8/M7/M6,我按5块显示数据。然而,我认为这可能比SQL问题更重要。你能展示你已经拥有的吗?如何配置数据提供程序?我编辑了我的PostWeSome!谢谢