Laravel Query Builder — запрос со специальным типом данных

У меня есть такой стол

введите описание изображения здесь

Итак, у меня есть специальный тип данных ( POINT ) за user_location,

Запрос выбора RAW выглядит так:

SELECT
id,
full_name,
website,
X(user_location) AS "latitude",
Y(user_location) AS "longitude",
(
GLength(
LineStringFromWKB(
LineString(
user_location,
GeomFromText('POINT(51.5177 -0.0968)')
)
)
)
)
AS distance
FROM users
ORDER BY distance ASC;

И результат —

введите описание ссылки здесь

Я хочу использовать его в Laravel с Query Builder, чтобы (51.5177 -0.0968) эти 2 балла могут исходить от пользовательского ввода.

Что я сделал, так это

DB::table('users')
->select(
id,
full_name,
website,
DB::raw('X(user_location) AS "latitude"'),
DB::raw('Y(user_location) AS "longitude"'),
DB::raw('(
GLength(
LineStringFromWKB(
LineString(
user_location,
GeomFromText('POINT(51.5177 -0.0968)')
)
)
)
)
AS distance')
)
->orderBy('distance', 'asc')
->get();

Но это не работает.

Может кто-нибудь, пожалуйста, помогите?

0

Решение

Я думаю, что вы довольно близки. Попробуй это:

DB::table('users')
->select(
'id',
'full_name',
'website',
DB::raw('X(user_location) as latitude'),
DB::raw('Y(user_location) as longitude'),
DB::raw('(
GLength(
LineStringFromWKB(
LineString(
user_location,
GeomFromText(POINT(51.5177 - 0.0968))
)
)
)
)
as distance')
)
->where('status', '<>', 1)
->orderBy('distance', 'asc')
->get();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]