Tôi nghĩ tôi nên đặt thêm câu hỏi trước khi đăng câu trả lời này, nhưng tôi nghĩ bạn đang làm sai thứ tự.
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;
*/
}
Vì vậy, bạn cần thêm groupBy của mình trong chính truy vấn vì đó là hành động truy vấn mà SQL của bạn phải thực hiện. Phần khác là khi bạn chuyển đổi nó thành một bộ sưu tập (không cần thiết 100%), bạn chỉ có thể trả lại nó. Laravel xử lý JSON nguyên bản.