Example #1
0
 /**
  * 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]);
 }