gpt4 book ai didi

mysql - 添加距离到查询结果

转载 作者:行者123 更新时间:2023-11-29 19:24:40 28 4
gpt4 key购买 nike

我尝试显示搜索结果的距离

代码和查询

$query = DB::select(DB::raw('SELECT id, ( 3959 * acos( cos( radians(' . $lat . ') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(latitude) ) ) ) AS distance FROM listings HAVING distance < ' . $distance . ' ORDER BY distance') );
foreach($query as $q)
{
array_push($ids, $q->id);

}
$placeholders = implode(',',array_fill(0, count($ids), '?'));
$listings = Listing::whereIn('id', $ids)->orderByRaw("field(id,{$placeholders})", $ids)->paginate(10);

$query 包含距离。

如何添加列表结果的距离?

最佳答案

将距离选择查询也附加到 Eloquent 查询中。

使用以下方法;

Listing::select([
"*",
"( 3959 * acos( cos( radians(' . $lat . ') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(latitude) ) ) ) AS distance"
])......

另外,为什么不使用第一个查询的结果,您不需要执行两次相同的查询。

关于mysql - 添加距离到查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237358/

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