【发布时间】:2017-08-06 21:41:09
【问题描述】:
我知道这已经被问过很多次了。 但是我没有想出根据自己的需要来制作。
我需要从另一个用户那里查询最近的用户。
基本上,我有一个users 表,该表与users_locations 表有一个one to one 关系,该表有一个纬度和一个经度字段。
所以我看到了这个 https://laravel.io/forum/04-23-2014-convert-this-geolocation-query-to-query-builder-for?page=1 这可能是最好的解决方案。
但我的基本查询是:
\App\Model\User::whereNotIn('id', $ids)
->where('status', 1)
->whereHas('user_location', function($q) use ($lat, $lng, $radius) {
/** This is where I'm stuck to write the query **/
})->select('id', 'firstname')
->get();
我不知道在这种情况下如何实施解决方案。
提前感谢您的帮助
编辑 为了更清楚: 我需要获取半径 5 公里内的用户。
【问题讨论】:
-
嗯,是的,谢谢,但是我已经有了这个功能,我需要用 MySQL 来做这个,因为我有超过 50000 个用户,在这种情况下,我应该得到所有这些用户,然后计算距离,最后让所有用户保持足够近的距离,这可能会占用太多资源..
-
您应该真正使用空间索引,但是您可以直接在查询中执行此操作,如此答案中的示例:stackoverflow.com/questions/8994718/…
-
是的,但我不知道如何在我的实际查询中实现它
-
你检查过这个帖子吗? stackoverflow.com/questions/37876166/…
标签: php mysql laravel geolocation eloquent