我想按距离对数据进行排序但失败了
I want to sort data by distance but failed
我想按距离对数据进行排序但失败了。
Table 个地方
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
}
我尝试对它进行排序,但它不起作用:
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
}
感谢帮助我
现在可以了
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
}
我想按距离对数据进行排序但失败了。
Table 个地方
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
}
我尝试对它进行排序,但它不起作用:
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
}
感谢帮助我
现在可以了
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
}