我有一个像
这样的数据库User
UserName
UserId
Chat
ChatId
ChatSubject
ChatUser
Chat_ChatId
User_UserId
ChatMessage
Chat_ChatId
User_UserId
Message
我在一个变量中有当前用户ID:$ userId
我想要的是在Chat_ChatSubject中找到聊天中其他人的UserName,这样我就可以创建一个会话列表,其中我显示了其他人的用户名和主题
我有什么:
$conversations= Chat::
Join('ChatUser', 'Chat.id', '=', 'ChatUser.User_UserId')
->Join('User', 'User.UserId', '=', 'ChatUser.User_UserId')
->Select('Users.UserName', 'Chat.Subject')
->OrderBy('ChatUsers.Chat_ChatId','asc')
->GroupBy('Chat.ChatId')
->get();
这是一个聊天列表,但它并不总是包含另一个人的名字。我想要的是User.UserName是另一个人的用户名,而不是我自己的用户名。
(一次聊天中总有2个ChatUser
答案 0 :(得分:0)
假设您已在模型中设置关系......
$conversations = User::find($userId)
->chats()
->with(array('users' => function($query) use ($userId){
$query->where('id', '!=', $id);
}))->get();
foreach($conversations as $conversation){
$conversation->ChatSubject; // get subject
$conversation->users; // get users collection (current user excluded)
}