0
У меня плохое преобразование этого подзапроса в laravel. Может кто-то помочь мне преобразовать эту длинную очередьКак преобразовать этот запрос в laravel
SELECT
rescue_units.id as 'rescue_units_id',
name,
address,
lat,
lng,
email,
type,
status,
(6371 * acos(cos(radians(10.3099568)) * cos(radians(lat)) * cos(radians(lng) - radians(123.8934193)) + sin(radians(10.3099568)) * sin(radians(lat)))) AS distance
FROM rescue_units
WHERE rescue_units.id = ANY (
SELECT ru_id
FROM ru_ec
WHERE ec_id = (
SELECT id
FROM emergency_codes
WHERE ID = 6
)
)
AND
status = 1
order by distance
EDIT: Это то, что я пытался до сих пор.
$markersByRadius = RescueUnit::select(
DB::raw("rescue_units.id as 'rescue_units_id', name, address, lat, lng, email, type, status,
(6371 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance
FROM rescue_units WHERE rescue_units.id = ANY (SELECT ru_id FROM ru_ec WHERE ec_id = (SELECT id FROM emergency_codes WHERE ID = ?)) AND status = 1 order by distance"))
->take($limit)
->setBindings([$lat, $lng, $lat, $ec_id])
->get();
return $markersByRadius;
И это ошибка:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE rescue_units.id = ANY (SELECT ru_id FROM ru_ec WHERE ec_id = (SELECT id FR' at line 3 (SQL: select rescue_units.id as 'rescue_units_id', name, address, lat, lng, email, type, status, (6371 * acos(cos(radians(10.3099568)) * cos(radians(lat)) * cos(radians(lng) - radians(123.8934193)) + sin(radians(10.3099568)) * sin(radians(lat)))) AS distance WHERE rescue_units.id = ANY (SELECT ru_id FROM ru_ec WHERE ec_id = (SELECT id FROM emergency_codes WHERE ID = 6)) AND status = 1 from `rescue_units` order by `distance` asc limit 3)
Пожалуйста, напишите, что вы пробовали до сих пор. –
@JoelHinz здесь, пожалуйста, проверьте ... – user352156
Что не работает, какие ошибки? – Matheno