我想按距離對數(shù)據(jù)進(jìn)行排序,但失敗了。表位type Place struct { gorm.Model CountyName string Name string Address string ServiceTime string Phone string BusinessScope string Remark string Lng float64 Lat float64 Type uint }這有效:func PlaceList(placeType, fieldName, fieldValue string, pageNum, pageSize int) (places []Place, err error) { result := DB.Scopes(Paginate(pageNum, pageSize)).Scopes(Filter(placeType, fieldName, fieldValue)).Find(&places) return places, result.Error}我試圖對它進(jìn)行排序,但這不起作用:func PlaceList(currentLng, currentLat, placeType, fieldName, fieldValue string, pageNum, pageSize int) (places []Place, err error) { var distance = "places.lng, places.lat, power((%s - places.lng),2) + power((%s - places.lat),2) as distance" var selectDistance = fmt.Sprintf(distance, currentLng, currentLat) result := DB.Table("places").Select(selectDistance).Scopes(Paginate(pageNum, pageSize)).Scopes(Filter(placeType, fieldName, fieldValue)).Order("distance").Find(&places) return places, result.Error}
1 回答

有只小跳蛙
TA貢獻(xiàn)1824條經(jīng)驗 獲得超8個贊
現(xiàn)在沒事了
func PlaceList(currentLng, currentLat, placeType, fieldName, fieldValue string, pageNum, pageSize int) (places []Place, err error) {
var distance = "*, power((%s - places.lng),2) + power((%s - places.lat),2) as distance"
var selectDistance = fmt.Sprintf(distance, currentLng, currentLat)
result := DB.Debug().Table("places").Select(selectDistance).Scopes(Paginate(pageNum, pageSize)).Scopes(Filter(placeType, fieldName, fieldValue)).Order("distance").Find(&places)
return places, result.Error
}
- 1 回答
- 0 關(guān)注
- 97 瀏覽
添加回答
舉報
0/150
提交
取消