Laravel 基于商店地理位置的产品搜索

Laravel 基于商店地理位置的产品搜索,laravel,eloquent,eloquent-relationship,Laravel,Eloquent,Eloquent Relationship,我是拉拉维尔的新手,我正在尝试使用附近的商店搜索产品 这是我的密码 Shop::selectRaw(" id , ( 6371 * acos( cos( radians(?) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(?) ) + s

我是拉拉维尔的新手,我正在尝试使用附近的商店搜索产品 这是我的密码

Shop::selectRaw(" id  ,
                     ( 6371 * acos( cos( radians(?) ) *
                       cos( radians( lat ) )
                       * cos( radians( lng ) - radians(?)
                       ) + sin( radians(?) ) *
                       sin( radians( lat ) ) )
                     ) AS distance", [$latitude, $longitude, $latitude])
            ->having("distance", "<", $radius)
            ->orderBy("distance",'asc')->products()->where('name', 'LIKE', '%' . $keyword . '%')->get();
Shop::selectRaw(“id,
(6371*acos(cos(弧度(?)*
cos(弧度(纬度))
*cos(弧度(lng)-弧度(?)
)+sin(弧度(?)*
sin(弧度(纬度)))
)作为距离“,[$latitude,$latitude,$latitude])

->有(“距离”,“我真的很困惑,为什么在
orderBy
和所有其他条款之后使用
products()

如果你想从商店获得
产品
,你不必做
产品()
,你必须使用
产品:…
,但是如果你想获得与
产品相关的商店
,你必须使用
Where has('products',…)
,请阅读更多相关信息

您的代码应该如下所示:

$shops=Shop::selectRaw(
“id,(6371*acos(
cos(弧度(?)*cos(弧度(纬度))*cos(弧度(lng)-弧度(?)+sin(弧度(?))*sin(弧度(纬度))
))作为距离“,
[$latitude,$latitude,$latitude])

->有(“距离”,“非常感谢你”这对我很有用。@Matiaslauriti真棒!你能把我的答案标记为正确吗?