Php 范围中的Laravel自身变量
我用哈弗森公式计算距离,这很好。 但我想隐藏距离大于该结果上“最大半径”字段的结果 这是我的数据库方案 这就是我正在使用的查询。 您可以看到我硬编码了距离(50)Php 范围中的Laravel自身变量,php,laravel,eloquent,query-builder,Php,Laravel,Eloquent,Query Builder,我用哈弗森公式计算距离,这很好。 但我想隐藏距离大于该结果上“最大半径”字段的结果 这是我的数据库方案 这就是我正在使用的查询。 您可以看到我硬编码了距离(50) 公共功能范围FitsDistance($query、$lat、$lng) { return$query->select(\DB::raw(“*”, (3959*acos(cos(弧度(?)* cos(弧度(纬度)) *cos(弧度(lng)-弧度(?) )+sin(弧度(?)* sin(弧度(纬度))) )如距离“)) ->addB
公共功能范围FitsDistance($query、$lat、$lng)
{
return$query->select(\DB::raw(“*”,
(3959*acos(cos(弧度(?)*
cos(弧度(纬度))
*cos(弧度(lng)-弧度(?)
)+sin(弧度(?)*
sin(弧度(纬度)))
)如距离“))
->addBinding($lat,'select')
->添加绑定($lng,'select')
->addBinding($lat,'select')
->having('distance'),'having('distance'),'having
having仅适用于分组方式
您可以进行子选择,然后改用
WHERE
子句。您可以提供一个代码示例吗?我不确定我是否知道如何实现子选择。谢谢!
public function scopeFitsDistance($query, $lat, $lng)
{
return $query->select(\DB::raw("*,
( 3959 * acos( cos( radians(?) ) *
cos( radians( lat ) )
* cos( radians( lng ) - radians(?)
) + sin( radians(?) ) *
sin( radians( lat ) ) )
) AS distance"))
->addBinding($lat, 'select')
->addBinding($lng, 'select')
->addBinding($lat, 'select')
->having('distance', '<', 50); <----------
}
->having('distance', '<', 'max_radius');