【发布时间】:2015-07-16 11:13:26
【问题描述】:
我正在更新基于 Laravel 的 API。
使用 Eloquent DB 模型,我编写了一个范围来将查询范围缩小到我们需要的范围。
我面临的问题是我们试图将纬度/经度坐标传递给查询,它们应该用于在给定点的某个半径范围内拉出用户。
手动输入时查询工作正常,但在调用范围后转储 SQL 时,它已经转义了 .浮标内。
代码:
public static function scopeInRadius($query, $lat, $lng, $distance = 50)
{
$qstring = '
( 3959 * acos(
cos( radians( '.$lat.') )
* cos( radians( latitude ) )
* cos( radians( longitude) - radians('.$lng.') )
+ sin( radians( '.$lat.') )
* sin( radians( latitude ) )
)
)';
return $query->where($qstring, '<', $distance);
}
在 var_dump()'ing ->toSql() 上,我看到以下输出:
string 'select * from `users` where `users`.`deleted_at` is null and `
( 3959 * acos(
cos( radians( 53`.`258100) )
* cos( radians( latitude ) )
* cos( radians( longitude) - radians(2`.`127400) )
+ sin( radians( 53`.`258100) )
* sin( radians( latitude ) )
)
)` < ?' (length=376)``
我确信必须有一个相当简单的方法来逃避这些时期,尽管我还没有找到它!任何帮助将不胜感激!
【问题讨论】:
标签: php mysql eloquent laravel-5