/** * Make the list for json autocomplete search * * @return string */ public static function cityListForAutoComplete() { $cities = City::select(['id', 'name'])->orderBy('name')->get()->transform(function ($city) { return $city['name'] = $city['name'] . ' (' . City::whereId($city['id'])->first()->province->name . ')'; }); return "var cities = " . $cities->toJson(); }
// get all the categories in the cities $categories = \App\Category::whereHas('ranks', function ($query) use($city) { $query->where('city_id', '=', $city->id); })->get(); return response()->json($categories); }); Route::get('/categories/{categoryId}', function ($categoryId) { $category = \App\Category::find($categoryId); return response()->json($category); }); Route::get('/categories/{categoryId}/places', function ($categoryId) { $lat = \Illuminate\Support\Facades\Input::get('lat', -27.49611); $lon = \Illuminate\Support\Facades\Input::get('lon', 153.00207); // Check if a valid location $radius = 25; $city = \App\City::select(DB::raw("*, (6371 * acos( cos( radians({$lat}) ) * cos( radians( latitude ) ) * cos( radians( {$lon} ) - radians(longitude) ) + sin( radians({$lat}) ) * sin( radians(latitude) ) )) AS distance"))->having('distance', '<', $radius)->orderby('distance', 'asc')->first(); if (!$city) { abort(400, 'City not supported.'); } $places = \App\Place::select(DB::raw("*, (6371 * acos( cos( radians({$lat}) ) * cos( radians( latitude ) ) * cos( radians( {$lon} ) - radians(longitude) ) + sin( radians({$lat}) ) * sin( radians(latitude) ) )) AS distance"))->orderby('distance', 'asc')->whereHas('ranks', function ($query) use($categoryId) { $query->where('category_id', '=', $categoryId); })->where('city_id', '=', $city->id)->with('ranks', 'ranks.category')->get(); return response()->json($places); }); Route::get('/yelp', function () { $yelp = new \App\Yelp\Yelp(); echo "<pre>"; print_r($yelp->best('pizza', 'Brisbane, Australia')); echo "</pre>"; }); });