0

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") 
}
4

0 に答える 0