【问题标题】:searching by latitude and longitude with laravel使用laravel按经纬度搜索
【发布时间】:2019-01-23 00:03:10
【问题描述】:

我知道已经有人问过这个问题,但就我而言,我有一个令人沮丧的问题,我很想找到答案。本质上,当我运行脚本时,我遇到了一个非数字值,因为我无法在等式中使用 db 表中的行的值。请看下面:

$auctions = Auction::join('users','auctions.user_id','users.id')
                ->join('categories','auctions.category_id','categories.id')
                ->join('sub_catogories','auctions.sub_category_id','sub_catogories.id')
                ->select(['auctions.id','auctions.title','auctions.slug',
                          'auctions.description','auctions.image',
                          'auctions.reserve_price','auctions.auction_status',
                          'auctions.start_date','auctions.end_date'], 
                          ((acos(sin($orig_lat * pi() / 180) * sin(-37.8136 * pi() / 180) + cos($orig_lat * pi() / 180) * cos(-37.8136 * pi() / 180) * cos(($orig_long - '**HOW DO I INSERT users.lat HERE????**') * pi() / 180)) * 180 / pi()) * 60 * 1.1515), 'AS', 'distance')

                ->where ( 'lat', 'BETWEEN', ($orig_lat - $bounding_distance), 'AND', ($orig_lat +         $bounding_distance), 'AND', 'lng', 'BETWEEN', ($orig_long - $bounding_distance), 'AND', ($orig_long + $bounding_distance))
                ->orderBy('auctions.id','desc')->paginate(PAGINATE_RECORDS);

【问题讨论】:

  • 你能详细解释一下吗?您是否要查找特定位置的经纬度或其他内容?您是否已经在数据库中存储了纬度/经度并且您正在尝试访问它?
  • 嗨,是的,我已经在数据库中存储了经纬度,我正在尝试运行查询以查找附近的列表

标签: php mysql laravel search


【解决方案1】:

而不是使用select 使用selectRaw 这个错误将会消失。

Auction::join('users','auctions.user_id','users.id')
                ->join('categories','auctions.category_id','categories.id')
                -
>join('sub_catogories','auctions.sub_category_id','sub_catogories.id')
                ->selectRaw('auctions.id','auctions.title','auctions.slug',
                          'auctions.description','auctions.image',
                          'auctions.reserve_price','auctions.auction_status',
                          'auctions.start_date','auctions.end_date', 
                          ((acos(sin($orig_lat * pi() / 180) * sin(-37.8136 * pi() / 180) + cos($orig_lat * pi() / 180) * cos(-37.8136 * pi() / 180) * cos(($orig_long - '**HOW DO I INSERT users.lat HERE????**') * pi() / 180)) * 180 / pi()) * 60 * 1.1515), 'AS', 'distance')

                ->where ( 'lat', 'BETWEEN', ($orig_lat - $bounding_distance), 'AND', ($orig_lat +         $bounding_distance), 'AND', 'lng', 'BETWEEN', ($orig_long - $bounding_distance), 'AND', ($orig_long + $bounding_distance))
                ->orderBy('auctions.id','desc')->paginate(PAGINATE_RECORDS);

【讨论】:

  • 感谢您的及时回复,但不幸的是,这也不起作用。
猜你喜欢
  • 2013-03-15
  • 2012-05-24
  • 2016-03-06
  • 2023-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多