对Laravel Eloquent的原始查询

时间:2018-04-03 12:45:21

标签: laravel

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中的语法

1 个答案:

答案 0 :(得分:0)

Haversine查询的一个可能选项是使用selectRawhavingRaw

$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])