php - 查询具有相同id但反转它们的多个表列
问题描述
我有一个to
和from
列,它们是users
消息表中的整数,因为我正在这部分构建一个类似聊天的应用程序。
所以我想获取当前登录用户的所有消息。所以这是查询
$all_messages = Message::where('from',$logged_user)->orWhere('to',$logged_user)->with('owner')->orderBy('created_at','desc')->get();
请注意,$logged_user
变量是整数/经过身份验证的用户ID,因此,
但我还想获取我也尝试连接的受访者或用户的 id 和 idlogged_user
之间的消息。respondent_id
因此,例如,当前登录的 user_id 是2
,响应者 id 是 3 我想要具有from
2 或 3 以及respondent_id
2 和 3 的消息,类似这样
解决方案
如果我正确理解了这个问题,那么您正在寻找属于两个用户之间对话的消息,那么您正在寻找的内容应该如下:
$loggedInUserId = 2;
$contactUserId = 3;
$messages = Message::query()
->where(function ($query) use ($loggedInUserId, $contactUserId) {
$query->where('sender_id', $loggedInUserId)
->where('recipient_id', $contactUserId);
})
->orWhere(function ($query) use ($loggedInUserId, $contactUserId) {
$query->where('recipient_id', $loggedInUserId)
->where('sender_id', $contactUserId);
})
->with('owner')
->orderBy('created_at', 'desc')
->get();
此外,如果您严重依赖跟踪两个或多个用户之间的“对话”,您可能会考虑将它们聚合为线程。
推荐阅读
- android - React Native :app:transformDexArchiveWithExternalLibsDexMergerForDebug Android 构建中的错误
- python - 将参数传递给端点以在事件挂钩中执行的函数内使用
- angular - angularfirebase 和 typescript - 设置数据库返回值的类型
- oracle - 安装多个版本的 Oracle Apex
- ios - 选择 segue 后,Storyboard 在 Xcode 11 中部分崩溃
- java - IntelliJ IDEA:生成带有特定类的 JAR?
- mysql - 将子子项中的外键添加到“超级父项” - 有没有像视图这样的更好方法?
- azure-devops - 发布测试结果任务中的“未找到匹配 **/*.trx 的测试结果文件”
- c - '=' 标记之前的预期表达式
- reactjs - 无法获取未定义或空引用的属性“包含”