2
我在我的模型中创建了一个范围,它创建一个别名,我需要执行它的位置,我明白MySql不允许这样做。在Laravel中计算坐标距离
标准SQL不允许您引用WHERE 子句中的列别名。施加此限制是因为当执行WHERE代码 时,列值可能尚未确定。
但是,我想知道是否有可能laravel工作? 我的范围创建一个别名距离,我想检查距离。
public static function scopeDistance($query, $lat, $long)
{
return $query->select(array('*',\DB::raw('(3959 * acos(cos(radians(' . $lat . ')) * cos(radians(latitude)) * cos(radians(longitude) - radians(' . $long . ')) + sin(radians(' . $lat .')) * sin(radians(latitude)))) AS distance')));
}
在我的控制器:
\App\Profile::distance($latitude, $longitude)->where('distance', '<', 50);