2017-08-01 5 views
1

ich die Abfrage bin bilden unter:Laravel DB :: Raw funktioniert nicht wie erwartet

SELECT *, ACOS(SIN(RADIANS(`latitude`)) * SIN(RADIANS('17.4073331')) + COS(RADIANS(`latitude`))* COS(RADIANS('17.4073331')) * COS(RADIANS(`longitude`) - RADIANS('78.3802307'))) * 6380 AS distance 
FROM bbq_branches_by_city 
HAVING distance <= 20 

Ich tue wie unten in Laravel:

DB::table('bbq_branches_by_city') 
    ->select(DB::raw("*, ACOS(SIN(RADIANS(`latitude`)) * SIN(RADIANS($lat)) + COS(RADIANS(`latitude`))* COS(RADIANS($lat)) * COS(RADIANS(`longitude`) - RADIANS($long))) * 6380 AS distance")) 
    ->havingRaw("distance <= 20") 
    ->get(); 

Können Sie mir mitteilen, wo ich zu verkennen bin ?

+0

Was genau das Problem ist, stellen Sie? Erhalten Sie einen Fehler oder eine falsche Ausgabe? – Jerodev

Antwort

2

Versuchen Sie folgendes:

DB::table('bbq_branches_by_city') 
    -> select(["*",DB::raw("ACOS(SIN(RADIANS(`latitude`)) * SIN(RADIANS($lat)) + COS(RADIANS(`latitude`))* COS(RADIANS($lat)) * COS(RADIANS(`longitude`) - RADIANS($long))) * 6380 AS distance")]) 
    ->havingRaw("distance<=20") 
    ->get(); 

die Auswahl als Array wie ['*','distance']

+0

@saikiran versuchen Sie es einfach, es wird für Sie arbeiten –

0

können Sie unter Code versuchen, basierend auf running-queries:

$data = DB::select('select *,ACOS(SIN(RADIANS(`latitude`)) * SIN(RADIANS('17.4073331')) + COS(RADIANS(`latitude`))* COS(RADIANS('17.4073331')) * COS(RADIANS(`longitude`) - RADIANS('78.3802307'))) * 6380 AS distance from bbq_branches_by_city having distance<=20'); 
+0

@saikiran: Hoffe, diese Antwort funktioniert für dich. –

Verwandte Themen