Myslím, že bych měl položit více otázek, než zveřejním tuto odpověď, ale myslím, že děláte věci ve špatném pořadí.
public function rentals($id)
{
// Retrieve all rentals within a region and the locations spatial data
$rentals = DB::table('rentals')
->join('regions', 'rentals.region_id', '=', 'regions.id')
->join('rental_locations', 'rentals.rental_location_id', '=', 'rental_locations.id')
->select('*')
->where('rentals.region_id', '=', $id)
->groupBy('rental_location_id')
->get();
return collect($rentals); // or return $rentals
/* Not necessary
// Create a collection from the array of query results
$rentals = collect($rentals);
// Laravel is set up to return collections as json when directly returned
return $rentals;
*/
}
Takže musíte přidat svou skupinu by do samotného dotazu, protože to je akce dotazu, kterou by měl provádět váš SQL. Další částí je, že když ji převedete na kolekci (což není 100% nutné), můžete ji prostě vrátit. Laravel zpracovává JSON nativně.