【发布时间】:2017-11-01 18:32:36
【问题描述】:
我的模型中有一个范围,它创建了一个别名,我需要在其上执行一个 where,我知道 MySql 不允许这样做。
标准 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);
【问题讨论】:
标签: php mysql laravel laravel-5 eloquent