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
編輯: 這是我到目前爲止已經試過。
$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)
請發表您迄今嘗試過的內容。 – 2015-02-09 11:52:36
@JoelHinz在這裏請檢查編輯... – user352156 2015-02-09 11:57:13
什麼是行不通的,有什麼錯誤? – Matheno 2015-02-09 11:57:22