将json数据转换为简单形式- Laravel聊天收件箱

46qrfjad  于 2022-12-24  发布在  其他
关注(0)|答案(2)|浏览(122)

我正在尝试从收件箱的"messages"表中获取最新消息聊天是在项目(在我的门户中列出)的用户和所有者之间进行的我想获取item_id的唯一数据
我的密码是

public function inbox()
{
    // $inbox = ChatMessage::distinct('item_id')->where('incoming_msg_id', auth()->user()->id)->orWhere('outgoing_msg_id', auth()->user()->id)->orderBy('msg_id', 'DESC')->get();

    $inbox = Message::where('incoming_msg_id', auth()->user()->id)->orWhere('outgoing_msg_id', auth()->user()->id)->latest('msg_id')->get()->unique('item_id');

    return $this->sendResponse($inbox,'Chat');
}

结果是完美的,只是我需要的是非关联/非对象数组。
电流输出

{
"success": true,
    "data": {
        "0": {
            "msg_id": 68,
            "incoming_msg_id": 0,
            "outgoing_msg_id": 2,
            "msg": "ok let me check",
            "msg_for": "hadiya",
            "item_id": "13",
            "msg_at": "1 day ago"
        },
        "1": {
            "msg_id": 62,
            "incoming_msg_id": 0,
            "outgoing_msg_id": 2,
            "msg": "test msg",
            "msg_for": "hadiya",
            "item_id": "1",
            "msg_at": "2 days ago"
        }
    },
    "message": "Chat"
}

预期输出

{
"success": true,
    "data": [
        {
            "msg_id": 68,
            "incoming_msg_id": 0,
            "outgoing_msg_id": 2,
            "msg": "ok let me check",
            "msg_for": "hadiya",
            "item_id": "13",
            "msg_at": "1 day ago"
        },
        {
            "msg_id": 62,
            "incoming_msg_id": 0,
            "outgoing_msg_id": 2,
            "msg": "test msg",
            "msg_for": "hadiya",
            "item_id": "1",
            "msg_at": "2 days ago"
        }
    ],
    "message": "Chat"
}
1mrurvl1

1mrurvl11#

这很简单,通过以下方法,你可以设置http状态码也(可选).

return response()->json(['chat' => $inbox], 200);
stszievb

stszievb2#

经过大量的修改我得到了解决方案。我以我要找的最好的JSON格式得到了截然不同的数据...

$inbox = ChatMessage::select('msg_id','incoming_msg_id','outgoing_msg_id','msg','msg_for','item_id','msg_at')->groupBy('item_id')->where('incoming_msg_id', auth()->user()->id)->orWhere('outgoing_msg_id', auth()->user()->id)->get();
        return $this->sendResponse($inbox,'Inbox');

说明:在Laravel 8中有一个名为groupBy()的函数,用于获得不同的结果。请查看此处的链接以了解更多信息。

相关问题