将 sql 查询转换为 laravel5.2?
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
现在我已经加入了用户和列表 table 实际上我正在做里程搜索但是我想用 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();
现在我有了核心 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();
我正在搜索里程。我已经在核心 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
现在我已经加入了用户和列表 table 实际上我正在做里程搜索但是我想用 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();
现在我有了核心 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();