我正在尝试在laravel中为我的网站创建聊天。我正在为用户选择最近的聊天,在此用户可以看到与他聊天的用户列表。
这是我的查询:
$data=[];
$chatusers = Chat::latest()->get(['reciver_id']);
$chatusers = collect($chatusers)->unique()->values()->all();
foreach ($chatusers as $user) {
if ($user['reciver_id']>=5000) {
$message=Chat::where('reciver_id',$user['reciver_id'])
->latest()
->first();
array_push($data,$message);
} else {
$message=Chat::where('sender_id',$user['reciver_id'])
->orWhere('reciver_id',$user['reciver_id'])
->latest()
->first();
array_push($data,$message);
}
}
我在这里附加数据库表的屏幕:
https://imgur.com/gqsRr7Y
这是聊天列表的屏幕:-
https://imgur.com/Jw81yeH
我没有管理关系。
请对此提供帮助。
谢谢
最佳答案
$login_user_id = 1; // use auth user_id
$chat = Chat::where(function($q) use($login_user_id){
$q->where('sender_id',$login_user_id)>orWhere('receiver_id',$login_user_id);
$q->where('receiver_id',$login_user_id)->orWhere('sender_id',$login_user_id);
})->orderBy('created_at','desc')->get()->toArray();
$other_user_id = [];
$message = [];
foreach ($chat as $key => $value) {
if(in_array($value->sender_id, $other_user_id) || in_array($value->receiver_id, $other_user_id)){
continue;
}
if($value->sender_id != $login_user_id){
$other_user_id[] = $value->sender_id;
}else{
$other_user_id[] = $value->receiver_id;
}
$message[] = $value;
}
print_r($message);
您必须添加表以管理未读消息。
关于mysql - 我正在尝试为laravel网站获取最近的聊天记录。但是查询返回错误的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57817765/