Search code examples
jsonlaravelapiresponselaravel-passport

How to remove brakets on Json respone


im working on Laravel Rest Api with passeport , in return response()->json() i want to trim the brackets

I've tried trim($json,'[]') function but it's not what i want

public function getOffers()
    {
        $offers = Offer::where('type', 'primary')->where('active', 1)->get();
        $paks = Offer::where('type', 'pack')->where('active', 1)->get();
        return response()->json([
            'offersList' => $offers,
            'packsList' => $paks,
        ], 200);

    }

i expect the output will be

{
    "offersList": {
        {
            "id": 3,
            "name": "Gold",
            "description": null
        }
    },
    "packsList":[]
}

but the actual result is

{
    "offersList": [
        {
            "id": 3,
            "name": "Gold",
            "description": null
        }
    ],
    "packsList":[]
}

Solution

  • $offers is a collection, and thus an array in JSON.

    If $offers should be a single item, use first() instead of get() and it will be rendered as a single object in your JSON instead of an array of objects.

    $offers = Offer::where('type', 'primary')->where('active', 1)->first();
    

    If $offers should, at times, contain multiple offers, leave it as-is; it's correct!