laravelでメッセージ一覧画面を作成したいのですが、
結果として
2さん aaaa 2021-03-05 18:00
1さん cccc 2021-03-05 16:00
4さん gggg 2021-03-05 12:00
のように表示したいのですがうまくいきません
・自身のユーザーID3とやりとりがあるメッセージの相手のみを取得し、
・自身のユーザーID3が受信者であっても送信者であっても最新の1件のみ表示する
といった場合、どのようにsqlを組み立てればいいのでしょうか?
コツや考え型、もしくはモデルや他の方法でしたほうが良いなどありましたらアドバイスお願いいたします。
messageテーブル
自身のIDは3
送信者=send_user_id
受信者=recieve_user_id
|id|send_user_id |recieve_user_id|message|created_at|
|:--|:--:|--:|
|1|2|3|aaaa|2021-03-05 18:00|
|2|3|2|bbbb|2021-03-05 17:00|
|3|3|1|cccc|2021-03-05 16:00|
|4|4|2|dddd|2021-03-05 15:00|
|5|1|3|eeee|2021-03-05 14:00|
|6|1|3|ffff|2021-03-05 13:00|
|7|4|3|gggg|2021-03-05 12:00|
eloquentで表示する場合、どうなるのでしょうか?
以下は色々試しているのですがこちらでは意図した結果とはなりません。
Message::whereIn('id', function($query) { $query->select(DB::raw('MAX(id) As id'))->from('messages')->groupBy('send_user_id'); })->get();
よろしくお願い致します
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/05 16:54
2021/03/05 16:57
2021/03/05 17:39
2021/03/05 17:40
2021/03/05 17:58