laravel的select会给自动加上``,但是在涉及到一些计算或者函数时就没法用select了,但laravel提供了2种方式实现:
DB::raw
$users = DB::table('users')
->select(DB::raw('count(*) as user_count, status'))
->where('status', '<>', 1)
->groupBy('status')
->get();
selectRaw
$orders = DB::table('orders')
->selectRaw('price * ? as price_with_tax', [1.0825])
->get();
如果我需要根据经纬度获取附近就需要计算,这时候就需要使用原生查询了,我选择了第二种方法
Map::selectRaw('id, address, lat, lng, round((
6370.996 * acos (
cos ( radians( ? ) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians( ? ) )
+ sin ( radians( ? ) )
* sin( radians( lat ) )
)
),1) AS distance', [$lnglat['lat'], $lnglat['lng'], $lnglat['lat']])
->orderBy('distance')