gpt4 book ai didi

php - DB::raw 上的 Laravel 条件

转载 作者:行者123 更新时间:2023-11-29 17:29:49 26 4
gpt4 key购买 nike

正在开发项目,我需要按距离(通过使用纬度和经度)排序我的广告,除此之外,我想让用户能够通过给出最大距离来限制广告数量例如:如果用户只想获取他旁边 100 英里内的广告,那么我订购广告并仅返回距离他 100 英里或更近的广告我已经完成了一些工作,订单广告已经完成,但我不知道如何继续

public function get_searched(Request $request){
$annonce=DB::table("annonces")
->where('nomAnnonce','like','%'.$request->input("nomAnnonce").'%')
->orderBy(
DB::raw('3959 * acos( cos( radians('.$request->input("lat").') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-'.$request->input("lon").') ) + sin( radians('.$request->input("lat").') ) * sin(radians(latitude)) )')
,'desc')
->get();

echo $annonce;
}

如果有人可以帮助我找出限制最大距离的原因,谢谢

最佳答案

使用这个:

$annonce = DB::table("annonces")
->select('annonces.*')
->selectRaw('3959 * acos( cos( radians(?) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(-?) ) + sin( radians(?) ) * sin(radians(latitude))) distance',
[$request->input('lat'), $request->input('lon'), $request->input('lat')])
->where('nomAnnonce', 'like', '%'.$request->input("nomAnnonce").'%')
->orderBy('distance', 'desc')
->having('distance', '<=', $request->input('max'))
->get();

正如 Devon 指出的,使用未经过滤的用户输入是极其危险的 ( SQL injection )。

关于php - DB::raw 上的 Laravel 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50743448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com