如何使用SQL查询计算laravel5.5中的距离? 我的代码在下面提到。
$specialProducts = Products::select('products.id', 'products.name', 'products.product_img', 'products.slug', 'products.price','products.lat','(3959 * ACOS(COS(RADIANS($lat))* COS(RADIANS(22.2765097))* COS(RADIANS(70.792523) - RADIANS(70.7583265))+ SIN(RADIANS(22.2897874))* SIN(RADIANS(22.2765097)))) AS distance')
->join('subcategories', 'subcategories.id', '=', 'products.sub_category_id')
->join('categories', 'categories.id', '=', 'subcategories.category_id')
->join('store', 'store.id', '=', 'products.store_id')
->where('products.status', 1)
->where('products.special', 1)
->orderBy('products.created_at', 'DESC')
->get();
答案 0 :(得分:1)
如果您拥有数据库中纬度和经度的值,那么您可以使用SQl查询获取它们之间的距离,如下例所示,使用带有DB的原始SQL:raw()。
{{1}}
如果您希望以英里而不是公里为距离,请将6371替换为3959。
计算过程可能需要很长时间,因此您可能希望将结果缓存以供下次使用。
答案 1 :(得分:0)
最好用php代替mysql。在这里查看我的回复。 https://stackoverflow.com/a/50040011/1262144