Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择用户的对话,但不选择用户_Sql_Laravel - Fatal编程技术网

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)
}