消息:显示带有变量User_ID的用户名



我有2个表,用于创建消息,对话和消息。如果您与新合作伙伴创建新消息,则会获得新的对话 ID,因此,如果您开始对话,您的user_id位于消息表中,并且在您正在user_one写作伙伴user_two的对话表中。但是,如果在其他地方开始了您正在user_two的对话,并且在消息表中,user_id是其他用户。

我需要你的写作伙伴的名字显示在列表中。

例:

  • 马里奥/最后一条消息/-> 如果我点击,我会看到消息
  • 玛丽亚/最后一条消息/-> 如果我点击,我会看到消息

保存并显示消息正在工作。我只需要从你的谈话伙伴那里读出名字。

使用我的解决方案,我得到了写作伙伴的名称,但前提是你是用户二。 问题是联接。 我需要类似 JOINNOTIN 的东西

我的桌子: 谈话

'id'
'user_one'
'user_two'

消息

'id'
'message'
'userid'
'conversationid' 

我的查询:

$messages = DB::table('conversation')
->select('messages.message', 'conversation.user_one', 'conversation.user_two', 'users.name', 'users.firstname', 'messages.id', 'messages.created_at', 'conversation.id')
->join('users', 'users.id', '=', 'conversation.user_one')
->join('messages', 'messages.conversation_id', '=', 'conversation.id')
->where('messages.userid', '!=', Auth::user()->id)
->orwhere('conversation.user_one', '=', Auth::user()->id)
->orwhere('conversation.user_two', '=', Auth::user()->id)
->groupBy('messages.conversation_id')
->latest()
->get();

您需要条件user_one == auth()->user()->idORuser_two == auth()->user()->idjoin()方法中。

$authId = auth()->user()->id;
$messages = DB::table('conversation')
->select('messages.message', 'conversation.user_one', 'conversation.user_two', 'users.name', 'users.firstname', 'messages.id', 'messages.created_at', 'conversation.id')
->join('users', function ($join) use ($authId) {
$join->on('id', '=', 'user_one')->orOn('id', '=', 'user_two')
->where('id', '!=', $authId);
})
->join('messages', 'messages.conversation_id', '=', 'conversation.id')
->where('messages.userid', '!=', Auth::user()->id)
->orwhere('conversation.user_one', '=', Auth::user()->id)
->orwhere('conversation.user_two', '=', Auth::user()->id)
->groupBy('messages.conversation_id')
->latest()
->get();

相关内容

  • 没有找到相关文章

最新更新