【问题标题】:Laravel Chat with Pivot Table how to return same users to same chatLaravel 与数据透视表聊天如何将相同的用户返回到相同的聊天
【发布时间】:2018-08-04 21:18:58
【问题描述】:

我正在开发一个聊天系统,我有三个表(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);

}

【问题讨论】:

  • 你试过什么?显示您的代码
  • 我更新我的问题添加了我的代码
  • 你能告诉我们生成的SQL吗?

标签: mysql laravel chat pivot-table


【解决方案1】:

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

$result1 = array_intersect($user1Conve,$user2Conve);
$result2 = array_intersect($user2Conve, $user1Conve);
if (count($result1) == 0 && count($result2) == 0) {
......

【讨论】:

  • 我确实截断了聊天和 user_chat 中的所有数据,并开始创建一个新的聊天进行测试,并且您的条件不起作用它返回(其他)值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-12
  • 2011-11-28
  • 1970-01-01
  • 2019-08-21
  • 2018-10-13
  • 1970-01-01
相关资源
最近更新 更多