0
我目前正在试图建立一个原始查询检索在附近,这里是我的尝试laravel 4原始查询错误
$places = DB::select('select * from b_details where(3959 * acos(cos(radians(37)) * cos(radians(lat = ?)) * cos(radians(lng = ?) - radians(-122)) + sin(radians(37)) * sin(radians(lat))))
as distance from b_details having distance < radius = ? order by distance LIMIT 0 , 20', array($lat, $lng, $radius));
我也试过:
$disctance_select = sprintf(
"(3959 * acos(cos(radians(%s)) " .
" * cos(radians(lat)) " .
" * cos(radians(lng) - radians(%s)) " .
" + sin(radians(%s)) * sin(radians(lat)) " .
") " .
") " .
"AS distance",
$lat,
$lng,
$lat
);
return DB::table('b_details')
->having('distance', '<', $radius)
->orderBy('distance', 'ASC')
->get(array('*',$disctance_select));
这样可以使产生错误:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax
这是我试图使用复制与laravel 4查询:
SELECT id, (3959 * acos(cos(radians(37)) * cos(radians(lat)) * cos(radians(lng) - radians(-122)) + sin(radians(37)) * sin(radians(lat)))) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
任何帮助表示赞赏,谢谢。
请检查下面Mr.Joe答案 –