Преобразование запроса MySQL в базу данных Laravel: Query Builder - PullRequest
0 голосов
/ 07 сентября 2018

Я пробовал это на базе данных с помощью инструмента SQL. Работает отлично. Но сейчас я изо всех сил пытаюсь реализовать его в моей БД: query Builder. Любая помощь или предложения будут благодарны за меня. Если вам нужно больше деталей, пожалуйста, прокомментируйте .. Я буду следовать дальше

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

1 Ответ

0 голосов
/ 07 сентября 2018

@ 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();
...