Myślę, że powinienem zadać więcej pytań, zanim opublikuję tę odpowiedź, ale myślę, że robisz rzeczy w złej kolejności.
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;
*/
}
Musisz więc dodać grupę groupBy w samym zapytaniu, ponieważ jest to akcja zapytania, którą powinien wykonywać Twój SQL. Druga część polega na tym, że po przekonwertowaniu go na kolekcję (co nie jest w 100% konieczne) możesz go po prostu zwrócić. Laravel natywnie obsługuje JSON.