回答

收藏

Laravel按最后一条消息对对话进行排序

技术问答 技术问答 248 人阅读 | 0 人回复 | 2023-09-12

我有一个Conversation模型,其中有很多ConversationMessage模型。
* t  I% {: F$ `现在,我想根据对话的最后一条消息对对话进行排序。基本上就像WhatsApp。如何建立查询?
; N3 P# `/ b9 X. Y2 s1 \! O+ a作为我的代码的注释:对话包含一个用户(user_id)和一个与公司相关的(company_id)。公司belongsToMany与用户有关系。
7 _. O& z6 B8 p7 `  \$ fConversation::whereHas('company', function ($q) use ($userId) {
: E6 \; {( W& a3 G' d" g    $q->whereHas('users', function ($q1) use ($userId) {& d) N. M/ b( h+ x1 ^( e, m
        $q1->where('users.id', $userId);
4 M9 p4 @, o) n5 B) f7 G    });
# o7 k$ ~, }6 U. [" s, z})->orWhereHas('user', function($q) use ($userId) {
. h, m; {6 O; V7 \; h$ T    $q->where('user.id', $userId);6 t: C4 b" l9 H5 P! S/ O
})->with(array('conversationMessage' => function($q) {
6 \- W. `) T% [" @    $q->orderBy('created_at', 'DESC');1 f: @; v5 ~6 ?( F
})->get();* U( M3 z% ^0 K) A
这样可以排序ConversationMessage关系模型,而不是对话。如何Conversations根据上一条消息对进行排序?4 Y- N) b7 l0 H  r0 P
               
! x0 Z' y  B4 l8 y) M. k解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则