メッセージとその発行日を含む SQL テーブルがあります。
これらのメッセージを M1、M2、... M99 と呼びましょう。M1 が最新のメッセージです。
whatsapp の方法でそれらを表示したい (私は Yii 1.1 フレームワークを使用しています): 最新のメッセージ M1 は一番下にあり、その上には 2 番目に新しい M2 メッセージなどがあります。
しかし、固定数のメッセージ (5 としましょう) のブロックごとに表示したいので、要求があれば前のメッセージをロードします。したがって、ページをロードすると、次のように表示されます。
(さらに読み込むボタン)
M5
M4
M3
M2
M1
[さらに読み込む] ボタンを 1 回クリックすると、上から下に次のようになります。
(さらにボタンをロード)/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など
limit と offset を使用しても、そのような並べ替えを行う方法がわかりません。
誰かがこれについて私を助けてくれたら嬉しいです、ありがとう!
編集:これが私が使用している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',
)); ?>