【问题标题】:Laravel haversine calculationLaravel 半正弦计算
【发布时间】:2017-01-18 19:50:38
【问题描述】:

我用这个工具来计算两点之间的距离:

$location = new CnpPoi(28.535153, -81.383219);
$destination = new CnpPoi(42.594018, -88.433886)
$location->getDistanceInMilesTo($destination);
$location->getDistanceInMetersTo($destination);

需要在查询中使用它来获取按距离已经通过 url 他的 $lat e $long 的给定点的距离排序的商店。 如何在查询中使用此函数?

【问题讨论】:

    标签: laravel laravel-5 laravel-5.1 haversine laravel-eloquent


    【解决方案1】:
    public function getStoresNear($latitude, $lngitude){
    
        $stores = Store::select('stores.*')
            ->selectRaw('( 6371 * acos( cos( radians(?) ) *
                               cos( radians( store_lat ) )
                               * cos( radians( store_long ) - radians(?)
                               ) + sin( radians(?) ) *
                               sin( radians( store_lat ) ) )
                             ) AS distance', [$latitude, $longitude, $latitude])
            ->orderBy('distance', 'desc')
            ->get();
    
        return $stores;
    }
    

    【讨论】:

    • 语法错误 1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器相对应的手册 - 靠近 'long ) - radians(?) ) + sin( radians(?) ) * ' 在第 3 行(SQL:select tb_users.*, ( 6371 * acos( cos(弧度(41.9242814) ) * cos( 弧度( lat) ) * cos( 弧度( long ) - 弧度(12.4923974) ) + sin( 弧度(41.9242814) ) * sin( 弧度( lat ) ) ) AS 到tb_users 的距离按distance desc 排序)(查看:/home/gethelpme/public_html/local/resources/views/user/risultati.blade.php)(查看:/home/gethelpme/public_html/local/resources/views/user/risultati .blade.php)
    • 哦,对不起,这个答案是针对 mysql 而不是 MariaDB。请在您的问题中发布 mariaDb 标签
    猜你喜欢
    • 2016-06-16
    • 2014-03-10
    • 1970-01-01
    • 2022-10-21
    • 2022-10-21
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多