lundi 11 janvier 2016

Laravel Complex Eloquest Query with paginate

I'm new to laravel and I' developing an app using google map where user search for a location and then it returns places in a specific radius. But I got stuck in how to write down the code in Eloquent. My query is :

$lat    = $request->input( 'lat' );
$lng    = $request->input( 'lng' );
$dist   = $request->input( 'dist' );

$query  = "SELECT *, ( 6371 * acos( cos( radians('$lat') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('$lng') ) + sin( radians('$lat') ) * sin( radians( lat ) ) ) ) AS distance FROM locations WHERE lat != '$lat' AND lng != '$lng' HAVING distance <= $dist ORDER BY id DESC";

I've tried :

   $locations = \DB::table( 'locations' )->select(['*', "( 6371 * acos( cos( radians('$lat') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('$lng') ) + sin( radians('$lat') ) * sin( radians( lat ) ) ) ) as distance"])->paginate(5);

But it seems it is not working. Instead it displays this error :

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 '* from `locations` limit 5 offset 0' at line 1 (SQL: select *, `(` as * from `locations` limit 5 offset 0)

Please help me figure out the issue. Thanks in advance.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire