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

Convert json data in simple form - Laravel chat-inbox

我正在尝试从 table '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');
}

结果很完美,我需要的是 non-associative/non-object 数组。

当前输出

{
"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"
}

谢谢

通过以下方法很简单,您也可以设置 http 状态代码(可选)。

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

经过多次修改,我得到了解决方案。 我得到了我一直在寻找的最佳 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() 的函数,用于获得不同的结果。 查看 link here 了解更多信息。