One of the routes I’m making for my API in laravel requires me to pass a variable to a ->each()
function.
This can be seen below:
JavaScript
x
public function by_location($zone_id)
{
$zone = Zone::where('id', $zone_id)->get()[0];
error_log($zone->id);
$exhibitors = Exhibitor::where('zone_id', $zone_id)->get();
$exhibitors->each(function($exhibitor, $zone)
{
error_log($zone->id);
$exhibitor['zone_info'] = $zone;
});
return response()->json($exhibitors);
}
This first error_log outputs ‘2’, but with the second I get ‘Trying to get property ‘id’ of non-object’.
Any help is apprecited!
Advertisement
Answer
You probably want to use $zone
which you selected from database on first line.
Also if you want to change value of item you are iterating you have to use ->map()
instead of ->each()
I changed ->get()[0] to ->first(). Never use ->get()[0]
JavaScript
public function by_location($zone_id)
{
$zone = Zone::where('id', $zone_id)->first();
error_log($zone->id);
$exhibitors = Exhibitor::where('zone_id', $zone_id)->get();
$exhibitors->map(function($exhibitor) use ($zone){
error_log($zone->id);
$exhibitor['zone_info'] = $zone;
return $exhibitor;
});
return response()->json($exhibitors);
}