static function nearest($latitude, $longitude) { $max_distance = 100; $radius = 6371; $distance = sprintf("( %d * acos( cos( radians(%s) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(%s) ) + sin( radians(%s) ) * sin( radians( latitude ) ) ) ) AS distance", $radius, $latitude, $longitude, $latitude); return Coupon::having('distance', '<', $max_distance)->orderBy('distance', 'ASC')->take(30)->get(array('*', DB::raw($distance))); }