/** * Lists all Post models. * @return mixed */ public function actionIndex() { $page_size = 10; $lat = (double) (isset($_GET['lat']) ? $_GET['lat'] : 0); $lon = (double) (isset($_GET['lon']) ? $_GET['lon'] : 0); $sql = 'SELECT * from (SELECT id,title,lon,lat,reply_at,create_at, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((:lat*PI()/180-lat*PI()/180)/2),2)+COS(:lat*PI()/180)*COS(lat*PI()/180)*POW(SIN((:lon*PI()/180-lon*PI()/180)/2),2)))*1000) AS d FROM post ORDER BY d) a where d<300 order by reply_at desc,create_at desc'; $count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM (' . $sql . ') a', [':lat' => $lat, ':lon' => $lon])->queryScalar(); $pages = new Pagination(['totalCount' => $count, 'pageSize' => $page_size]); $points = Point::getPoints(5, $lat, $lon); $dataProvider = new SqlDataProvider(['sql' => $sql, 'params' => [':lat' => $lat, ':lon' => $lon], 'totalCount' => $count, 'pagination' => ['pageSize' => $page_size]]); return $this->render('index', ['dataProvider' => $dataProvider, 'pages' => $pages, 'points' => $points]); }