根据经纬度查询附近几公里的门店内的门店

直接贴代码

$field_lat = 'latitude';
$field_lng = 'longitude';
$distanceSql
= "(6378.138 * 2 * asin(sqrt(pow(sin(({$field_lat} * pi() / 180 - {$lat} * pi() / 180) / 2),2) + cos({$field_lat} * pi() / 180) * cos({$lat} * pi() / 180) * pow(sin(({$field_lng} * pi() / 180 - {$lng} * pi() / 180) / 2),2))) * 1000)"; $shop_store = Db::name('store')->where($where)   ->field("id,name,province_name,city_name,area_name,address,status, {$distanceSql} as distance")   ->where(Db::raw($distanceSql . "<=" . $store_juli)) //获取多少范围之内   // 按距离升序排列(由近到远   ->order("distance {$order}")   ->paginate(10);

代码片段解析

获取多少范围之内需要用原生的 ->where(Db::raw($distanceSql . "<=" . ($distance*1000)))

不能用 ->where($distanceSql, "<=" . ($distance*1000)), 因为长表达式后面的条件不识别

$distance就是查询的多少KM

 
posted @ 2024-05-16 17:37  路三千  阅读(173)  评论(0)    收藏  举报