[英]convert sql query in to laravel5.2?
我在做里程搜索。 我在核心SQL查询中完成了里程搜索,但我想将其转换为laravel查询。 任何人都可以帮助我: - 这是我的数据库结构
Users table
id name
1 abc
2 def
Listings Table
id user_id name latitude longitude
1 1 test 30.9193 75.8309
2 2 new 30.9177 75.8415
现在我已经连接用户和列表表实际上我正在寻找里程但我想用laravel查询实现这里是我的laravel查询: -
$users = DB::table('users')
->join('listings','users.id','=','listings.user_id')
->select('users.id','users.service_name','listings.id as listid','listings.latitude','listings.longitude')
->get();
现在我有Core sql查询,但我想与上面的查询结合: -
enter code here
$sql = SELECT *, ( 3959 * acos ( cos ( radians(30.9193) ) * cos( radians(
lat ) ) * cos( radians( lng ) - radians(75.8309) ) + sin ( radians(30.9193)
) * sin( radians( lat ) ) ) ) AS distance FROM listings HAVING distance <
76任何人都可以帮我如何添加上面的查询laravel。 提前致谢 :)
当您的查询要复杂时,请在Laravel中尝试RAW
查询,如:
$data = DB::select(DB::raw('Your SQL query'));
注意:这些表达式将作为字符串注入到查询中,因此请注意不要创建任何SQL注入点
试试whereRaw
$nearby = Listings::whereRaw("(
3959
*DEGREES(ACOS(COS(RADIANS('30.9193'))
* COS(RADIANS(lat))
* COS(RADIANS('75.8309' - lng))+ SIN (RADIANS('30.9193'))
* SIN(RADIANS(lat))))<=5)"
)->paginate(50);
在你的情况下
$users = DB::table('users')
->join('listings','users.id','=','listings.user_id')
->select('users.id','users.service_name','listings.id as listid','listings.latitude','listings.longitude')
->whereRaw("(
3959
*DEGREES(ACOS(COS(RADIANS('30.9193'))
* COS(RADIANS(listings.latitude))
* COS(RADIANS('75.8309' - listings.longitude))+ SIN (RADIANS('30.9193'))
* SIN(RADIANS(listings.longitude))))<=76)"
)
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.