我正在尝试以Twitter处理邮件的方式对来自用户的邮件进行排序。因此,应该列出向我发送消息的每个用户,并在下面列出他们的最新消息。
我尝试获取此查询的查询似乎应该对我有用,但没有成功。它返回用户发送给我的第一条消息,反之。
这是我的查询
$messages = Message::with('user')->where('target_user_id', Auth::user()->id)
->latest()->groupBy('user_id')->get();
消息表如下所示:
id
message
user_id ( user sending the message id)
target_user_id ( user the message is sent to id)
我尝试了人们指示我重复使用的方法,但没有成功。我得到的结果与当前查询相同。
这是我尝试过的:
$messages = Message::with('user')->where('target_user_id', Auth::user()->id)
->select(DB::raw('t.*'))
->from(DB::raw('(SELECT * FROM messages ORDER BY created_at DESC) t'))
->groupBy('t.user_id')
->get();
答案 0 :(得分:0)
尝试使用distinct
和orderBy
并检查是否可以解决您的问题:
$messages = Message::with('user')
->where('target_user_id', Auth::user()->id)
->orderBy('created_at', 'desc')
->distinct('user_id')
->get();