为了账号安全,请及时绑定邮箱和手机立即绑定

查询具有相同id但反转它们的多个表列

查询具有相同id但反转它们的多个表列

PHP
温温酱 2022-05-27 15:07:39
我有一个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 我想要具有from2 或 3 以及respondent_id2 和 3 的消息,类似这样
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

如果我正确理解了这个问题,那么您正在寻找属于两个用户之间对话的消息,那么您正在寻找的内容应该如下:


$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();

此外,如果您严重依赖跟踪两个或多个用户之间的“对话”,您可能会考虑将它们聚合为线程。如果我正确理解了这个问题,那么您正在寻找属于两个用户之间对话的消息,那么您正在寻找的内容应该如下:


$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();

此外,如果您严重依赖跟踪两个或多个用户之间的“对话”,您可能会考虑将它们聚合为线程。


查看完整回答
反对 回复 2022-05-27
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号