How to remove index number from laravel eloquent u

2020-03-30 04:00发布

问题:

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