获取每个用户发送给用户的最新消息

时间:2018-11-09 16:50:33

标签: php laravel laravel-5 eloquent

我正在尝试以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();

1 个答案:

答案 0 :(得分:0)

尝试使用distinctorderBy并检查是否可以解决您的问题:

$messages = Message::with('user')
                   ->where('target_user_id', Auth::user()->id)
                   ->orderBy('created_at', 'desc')
                   ->distinct('user_id')
                   ->get();