我有一个包含消息及其发布日期的 SQL 表。
我们将这些消息称为 M1、M2、... M99。M1 是最新消息。
我想以 whatsapp 的方式显示它们(我正在使用 Yii 1.1 框架):最新消息 M1 位于底部,其上方是第二条最新的 M2 消息,依此类推。
但我想按固定数量的消息块(比如说 5 个)显示它们,如果需要,我将加载上一条消息。因此,在加载页面时,您应该看到:
(加载更多按钮)
M5
M4
M3
M2
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',
)); ?>