DB :: select(&#34; SELECT *,(3959 * acos(cos(弧度($ lat))* cos(弧度(纬度))* cos(弧度(lng) - 弧度($ lng)) + sin(弧度($ lat))* sin(弧度(纬度))))AS距离沙龙距离<25 ORDER BY距离LIMIT 0,3&#34;);
这是我的查询,根据lot和lng给出了最近的遗骸 我想要laravel中的语法
答案 0 :(得分:0)
Haversine查询的一个可能选项是使用selectRaw
和havingRaw
。
$salons = Salon::select('salons.*')
->selectRaw('( 3959 * acos( cos( radians(?) ) *
cos( radians( lat ) )
* cos( radians( lng ) - radians(?)
) + sin( radians(?) ) *
sin( radians( lat ) ) )
) AS distance', [$lat, $lng, $lat])
->havingRaw("distance < 25")
->get();
您可以通过修改havingRaw
:
->havingRaw("distance < ?", [$radius])