Laravel Chat——如果两个用户已经拥有一个房间,则阻止创建新房间

问题描述 投票:0回答:1

我正在开发一个聊天系统。我有三个表

(users , chats , user_chat)
,其中用户聊天是数据透视表。

我想每次检查相同的用户想要返回聊天室进行通信,并且不要创建新的聊天室。

喜欢

这意味着每当

**user_id:15**
**user_id:20**
希望沟通,将其返回到
**chat_room:1**
,而不是创建新的。怎么办?

我已经尝试过

array_intersect()
但我没有得到任何结果。

public function store(Request $requests){
    //$requests->user()->id;
    $data = $requests->all();
    $username1 = User::select('username')->where('id',auth()->guard('api')->user()->id )->first();
    $username2 = User::select('username')->where('id',$data['recever_id'] )->first();
    $user1Conve[] = Conversation::where('user_id' , '=',auth()->guard('api')->user()->id )->select('chat_room_id')->get();
    $user2Conve[] = Conversation::where('user_id' , '=',$data['recever_id'] )->select('chat_room_id')->get();
    $result = array_intersect($user2Conve, $user1Conve);
    if (count($result) == 0) {

        $chatroom = ChatRoom::create([
            'room_name' => 'محادثة بين' . $username1->username . ' و ' . $username2->username . '', 'sender_id' => auth()->guard('api')->user()->id

        ]);
        $lastId = (int)$chatroom->id;

        Conversation::create(['chat_room_id' => $lastId, 'user_id' => auth()->guard('api')->user()->id]);
        Conversation::create(['chat_room_id' => $lastId, 'user_id' => $data['recever_id']]);

        $message = Messages::create(
            ['message' => $data['message'],
                'user_room_id' => $lastId,
                'user_id' => auth()->guard('api')->user()->id,
            ]);
        $success['chat_room_id'] = $chatroom->id;
        $success['arrayIntersct'] = $result;
        $pusher = new Pusher("418914066f12eac2d5fd", "6e1b5e98b06d7d3ebd7a", "449820", array('cluster' => 'ap2'));
        $pusher->trigger('my-channel', 'my-event', array('message' => $message->message));
    }
    else {

    }

      return response()->json(['code'=>'success','success'=>$success], $this->successStatus);
}
php mysql laravel pivot-table chat
1个回答
0
投票

array_intersect
搜索 array1 中其值存在于数组 2 中的所有值,所以我认为你也应该将它与倒排数组一起使用:

$result1 = array_intersect($user1Conve,$user2Conve);
$result2 = array_intersect($user2Conve, $user1Conve);
if (count($result1) == 0 && count($result2) == 0) {
......
© www.soinside.com 2019 - 2024. All rights reserved.