将 mysql 查询转换为 Laravel 的 DB:Query 生成器
Convert mysql query to Laravel's DB:Query Builder
我使用 SQL 工具在数据库上试过这个。它工作完美。但现在我正在努力将它实施到我的数据库:查询 Builder.Any 帮助或建议将不胜感激。如果需要更多细节请评论..我接下来会关注
SELECT u.*, (6371 * acos(cos(radians(22.559648)) * cos(radians(`lat`)) * cos(radians(`lng`) - radians(88.415552)) + sin(radians(22.559648)) * sin(radians(`lat`)))) AS distances
FROM users AS u
JOIN locations AS l ON `u`.`location_id` = `l`.`id`
HAVING distances < 32.688888
ORDER BY distances DESC
@JinalSomaiya
我更改了以下内容并且工作正常。
->having('distances', '<', 32.688888])
到
->having('distances', '<', [32.688888])
和
->join('locations as l', 'l.id', '=', 'users. location_id')
到
->join('locations as l', 'users.location_id', '=', 'l.id')
最终查询:
编辑
DB::table('users')
->join('locations as l', 'users.location_id', '=', 'l.id')
->select('users.*', DB::raw('(6371 * acos(cos(radians(22.559648)) * cos(radians(`lat`)) * cos(radians(`lng`) - radians(88.415552)) + sin(radians(22.559648)) * sin(radians(`lat`)))) as distances'))
->having('distances', '<', 32.688888)
->orderBy('distances', 'DESC')
->get();
我使用 SQL 工具在数据库上试过这个。它工作完美。但现在我正在努力将它实施到我的数据库:查询 Builder.Any 帮助或建议将不胜感激。如果需要更多细节请评论..我接下来会关注
SELECT u.*, (6371 * acos(cos(radians(22.559648)) * cos(radians(`lat`)) * cos(radians(`lng`) - radians(88.415552)) + sin(radians(22.559648)) * sin(radians(`lat`)))) AS distances
FROM users AS u
JOIN locations AS l ON `u`.`location_id` = `l`.`id`
HAVING distances < 32.688888
ORDER BY distances DESC
@JinalSomaiya 我更改了以下内容并且工作正常。
->having('distances', '<', 32.688888])
到
->having('distances', '<', [32.688888])
和
->join('locations as l', 'l.id', '=', 'users. location_id')
到
->join('locations as l', 'users.location_id', '=', 'l.id')
最终查询:
编辑
DB::table('users')
->join('locations as l', 'users.location_id', '=', 'l.id')
->select('users.*', DB::raw('(6371 * acos(cos(radians(22.559648)) * cos(radians(`lat`)) * cos(radians(`lng`) - radians(88.415552)) + sin(radians(22.559648)) * sin(radians(`lat`)))) as distances'))
->having('distances', '<', 32.688888)
->orderBy('distances', 'DESC')
->get();