如何将此where clause
添加到laravel eloquent model
$proxSql = "(3958 * 3.1415926 * sqrt((Latitude - '.$lat.') * (Latitude - '.$lat.')
+ cos(Latitude / 57.29578) * cos('.$lat.' / 57.29578) * (Longitude-'.$long.') * (Longitude - '.$long.')) / 180)";
$listings->where($proxSql, '<=', 5);
返回语法错误,似乎laravel正在添加刻度。
答案 0 :(得分:0)
where子句不是在此处使用的正确子句。
您将需要使用whereRaw();
https://laravel.com/docs/5.8/queries#raw-methods
$listings->whereRaw($proxSql.' <= ?', [5]);
答案 1 :(得分:0)
由于您直接在查询中使用列名,因此需要使用whereRaw()
。否则,它将寻找该变量$proxSql
的列名。您还应在绑定变量时对其进行绑定。
$proxSql = "(3958 * 3.1415926 * sqrt((Latitude - ?) * (Latitude - ?)
+ cos(Latitude / 57.29578) * cos(? / 57.29578) * (Longitude - ? ) * (Longitude - ?)) / 180) <= 5";
$listings->whereRaw($proxSql, [$lat, $lat, $lat, $long, $long]);