Sql 选择用户的对话,但不选择用户
我有一个像这样的数据库Sql 选择用户的对话,但不选择用户,sql,laravel,Sql,Laravel,我有一个像这样的数据库 User UserName UserId Chat ChatId ChatSubject ChatUser Chat_ChatId User_UserId ChatMessage Chat_ChatId User_UserId Message 我在变量中有当前用户id,如:$userId 我想要的是在聊天中找到另一个人的用户名,这样我就可以创建一个对话列表,在其中显示另一个人的用户名和主题 我所拥有的: $conversatio
User
UserName
UserId
Chat
ChatId
ChatSubject
ChatUser
Chat_ChatId
User_UserId
ChatMessage
Chat_ChatId
User_UserId
Message
我在变量中有当前用户id,如:$userId
我想要的是在聊天中找到另一个人的用户名,这样我就可以创建一个对话列表,在其中显示另一个人的用户名和主题
我所拥有的:
$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是其他人的用户名,所以不是我自己的用户名
(如果您在模型中设置了关系,则一次聊天中始终有两个聊天用户。)
$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)
}