Jenssegers と Mongodb を使用して挿入された順序でデータベースから created_at 時間に従って、最後に挿入された 2 つのユーザーのチャットを取得したいと考えています。いくつかのクエリを試しましたが、目的の結果を得ることができませんでした。
これらのクエリは、挿入された順序で最初の 2 つのチャットを返します。
$prev_chats = ChatMessages::where('chat_id','=', $chat_id)->take(2)->get();
$prev_chats = ChatMessages::orderBy('created_at','asc')->where('chat_id','=', $chat_id)->take(2)->get();
$prev_chats = ChatMessages::orderBy('created_at','asc')->where('chat_id','=', $chat_id)->paginate(2);
順序を逆にしようとすると、最後の2つがフェッチされますが、それらが挿入されたシリアルが変更されます(最後が最初になることを意味します)。
$prev_chats = ChatMessages::orderBy('created_at','desc')->where('chat_id','=', $chat_id)->paginate(2);
$prev_chats = ChatMessages::orderBy('created_at','desc')->where('chat_id','=', $chat_id)->take(2)->get();
挿入されたシーケンスの最後の 2 つのレコードを取得する方法はありますか。または、これを行う別のロジックが存在する可能性があります。
コレクション内のサンプル データ:
{
"_id": ObjectId("56fd1ad11c8cb633208b4569"),
"message": "I deal in Cosmetic Products.",
"type": "groupchat",
"from_id": "56b07a5a083f119a0b8b4569",
"chat_id"▼: "56fa3f5f1c8cb667138b4567",
"updated_at": ISODate("2016-03-31T12:40:49.807Z"),
"created_at": ISODate("2016-03-31T12:40:49.807Z")
}
{
"_id": ObjectId("56fd1ab41c8cb6f1298b456a"),
"message": "What business do you deal in.",
"type": "groupchat",
"from_id": "56b087d4083f11ea218b4567",
"chat_id": "56fa3f5f1c8cb667138b4567",
"updated_at": ISODate("2016-03-31T12:40:20.465Z"),
"created_at": ISODate("2016-03-31T12:40:20.465Z")
}