简体   繁体   English

Laravel DB :: Raw无法按预期工作

[英]Laravel DB::Raw not working as expected

I am forming the query below: 我正在形成下面的查询:

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

I am doing like below in laravel: 我在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();

Can you let me know where I am mistaking? 你能让我知道我在哪里吗?

Try this: 尝试这个:

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();

Just make the select as array like ['*','distance'] 只需选择数组即可,例如['*','distance']

您可以根据运行查询尝试以下代码:

$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');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM