How to remove index number from laravel eloquent unique

泪湿孤枕 提交于 2020-01-30 03:17:46

问题


I am using a query that returns value perfectly but it adds key number to the collection. How can I remove the index number?

Here is the retrieved data

{
"data": {
    "0": {
        "id": 135,
        "conversation_id": 11,
        "last_sender": null,
        "last_reciever": {
            "id": 54,
            "userName": "Sadek",
            "profilePic": "Nir7zgorNT2dmwcXJdhNK3ZmPAltmkEnj0SXDCDC.png",
            "firstName": "Sadek",
            "lastName": "Hossain"
        },
        "msg": "hello guys how are you",
        "attachment": null,
        "deleted": 0,
        "seen": 0,
        "created_at": "2017-10-17 16:56:41",
        "updated_at": "2017-10-17 16:56:41"
    },
    "2": {
        "id": 133,
        "conversation_id": 13,
        "last_sender": null,
        "last_reciever": {
            "id": 55,
            "userName": "buyer",
            "profilePic": "pRBDBFJW55baSnF560Ajid8jTgPo5kmg4i5LMhPG.jpeg",
            "firstName": "Matti",
            "lastName": "Rames"
        },
        "msg": "second message 2 to user second",
        "attachment": null,
        "deleted": 0,
        "seen": 0,
        "created_at": "2017-10-17 15:43:14",
        "updated_at": "2017-10-17 15:43:14"
    }
}

}

But I want to return results like this

{
"data": [
    {
        "id": 133,
        "conversation_id": 13,
        "last_sender": null,
        "last_reciever": {
            "id": 55,
            "userName": "buyer",
            "profilePic": "pRBDBFJW55baSnF560Ajid8jTgPo5kmg4i5LMhPG.jpeg",
            "firstName": "Matti",
            "lastName": "Rames"
        },
        "msg": "second message 2 to user second",
        "attachment": null,
        "deleted": 0,
        "seen": 0,
        "created_at": "2017-10-17 15:43:14",
        "updated_at": "2017-10-17 15:43:14"
    },
    {
        "id": 135,
        "conversation_id": 11,
        "last_sender": null,
        "last_reciever": {
            "id": 54,
            "userName": "Sadek",
            "profilePic": "Nir7zgorNT2dmwcXJdhNK3ZmPAltmkEnj0SXDCDC.png",
            "firstName": "Sadek",
            "lastName": "Hossain"
        },
        "msg": "hello guys how are you",
        "attachment": null,
        "deleted": 0,
        "seen": 0,
        "created_at": "2017-10-17 16:56:41",
        "updated_at": "2017-10-17 16:56:41"
    }
]

}

My query is (last few parts that I think is important)

->orderBy('created_at', 'desc') 
->get()
->unique('conversation_id');

Please tell me how can I remove "0" and "2" from this collection.


回答1:


You have to do it manually

   $users=\App\User::get()->toArray(); // your query here 
   $data['data']=[];
   foreach($users as $user ){ 
         $data['data'][]=$user; 
    }
   $k=json_encode($data); dd($k);



回答2:


In order to get a collection without a index you have to add the "values" method

$collection->unique('id')->values();


来源:https://stackoverflow.com/questions/46795617/how-to-remove-index-number-from-laravel-eloquent-unique

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!