mysqlが私の強い訴訟ではないので、これを理解できないようです。私はここで少し研究をしましたが、2つと2つをまとめることができないので、私はコミュニティにいくつかの助けを求めています。グループ最新のメッセージによる会話Laravel
私は2人のユーザーがお互いに話すことができる私のLaravelアプリ内にチャット機能を構築しています。私は受信ボックス(会話をまとめてグループ化する)の部分を構築する方法を理解できません。最後のメッセージを送信してグループ化する方法を知りました。
public function lastMessages() {
return $this->hasMany('App\Message', 'recipient_id')
->select('*')
->join(DB::raw('(Select max(id) as id from messages group by author_id) LatestMessage'), function($join) {
$join->on('messages.id', '=', 'LatestMessage.id');
})
->orderBy('created_at', 'desc');
}
私のメッセージテーブルは、次の要素で構成されます:author_id
、recipient_id
、messaged
、viewed
次は私のUser
モデルの内側にあります。
私がしなければならないことは、私たちが発信して最新のメッセージを受信ボックスのエントリとして表示するかどうかをグループ化して、そのメッセージをクリックすると残りの会話がページに表示されます。
上記の私の現在のSQLでは、会話全体ではなく、最後のメッセージが1つだけ表示されます。
ご協力いただきありがとうございます。
私はそれをしましたが、それは配列のエントリの重複を私に与えます。受信者ID == $ユーザーIDとauthor_id == $ユーザーIDの場合、2つの複製が生成されます。私はgroupBy recipient_idにしようとしましたが、それはauthor_idを省略し、逆も同様です。私はそれが意味をなさないことを願っています – max234435
私はほぼ同時に受信者とauthor_idでグループ化する必要があります... – max234435