【发布时间】:2018-04-02 08:12:44
【问题描述】:
我尝试从数据库中检索消息组,但查询未按created_at 标志对结果进行排序。
查询如下所示:
$groups = self::
where(function($query) use ($user_id) {
$query->where('to_id', $user_id);
$query->orWhere('from_id', $user_id);
})
->join('users as u1', 'user_messages.to_id', 'u1.id')
->join('users as u2', 'user_messages.from_id', 'u2.id')
->select(
'u1.nickname as u1_nickname',
'u1.id as u1_id',
'u2.id as u2_id',
'u2.nickname as u2_nickname',
'user_messages.created_at'
)
->orderBy('created_at', 'desc')
->groupBy(
DB::raw(
'if (user_messages.from_id = '.$user_id.', user_messages.to_id, user_messages.from_id)'
)
)
->get()
->toArray();
其中$user_id 是经过身份验证的用户。
orderBy 子句未按预期工作。用户不按最后发送消息的人分组。
有什么建议吗?谢谢。
【问题讨论】:
-
在
groupBy()之后尝试orderBy() -
谢谢,但没有用。
-
dd(groups)提供了什么? -
能否请您添加您的表结构、一些示例数据和预期结果?
标签: php mysql laravel eloquent laravel-eloquent