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);