I am making a call to an endpoint to get back data which returns a lot of it. I need to partition the ones I need grouped into my own category. Basically when I make the call I get this sample response.
{
"status": "success",
"message": "bill categories retrieval successful",
"data": [{
"id": 1,
"biller_code": "BIL099",
"name": "MTN NIgeria",
"default_commission": 0.03,
"date_added": "2018-07-03T00:00:00Z",
"country": "NG",
"is_airtime": true,
"biller_name": "AIRTIME",
"item_code": "AT099",
"short_name": "MTN",
"fee": 0,
"commission_on_fee": false,
"label_name": "Mobile Number",
"amount": 0
}, {
"id": 2,
"biller_code": "BIL099",
"name": "GLO Nigeria",
"default_commission": 0.03,
"date_added": "2018-07-03T00:00:00Z",
"country": "NG",
"is_airtime": true,
"biller_name": "AIRTIME",
"item_code": "AT099",
"short_name": "GLO",
"fee": 0,
"commission_on_fee": false,
"label_name": "Mobile Number",
"amount": 0
},
... //on and on
}
In my code I have this to filter it but it returns empty…
public function billPower()
{
$response = Http::withToken('FLWSECK_******-X')->get('https://baseUrl/v3/bill-categories', [
]);
$collection = collect($response->json());
$filtered = $collection->whereIn('id', [1, 2, 3, 4]);
return $filtered->all();
}
How can I do this in laravel?
Advertisement
Answer
you need to do:
$collection = collect($response->json()['data']);
then your filter should work
$filtered = $collection->whereIn('id', [1, 2, 3, 4]);