php - 如何将先前声明的 DB::raw() 列传递到 whereRaw() 查询
问题描述
我有一个 laravel 雄辩的查询,它获取用户 ID,以及他们与您自己位置的距离
$lat = Auth::user()->lat;
$lon = Auth::user()->lon;
$users = DB::table('users')
->select(DB::raw("id, ASIN(SQRT( POWER(SIN(($lat
- abs(lat))*pi()/180/2),2)+COS($lat*pi()/180 )*COS(abs(lat)*pi()/180)
*POWER(SIN(($lon-lon)*pi()/180/2),2)))as distance))
->whereRaw("distance < $radius")
>paginate($this->takeResults);
查询有效并计算所有距离。但是我无法查询这些距离。因为将“距离”传递给 whereRaw() 语句似乎没有延续?
我明白了
Unknown column 'distance' in 'where clause'
任何人都知道我该怎么做?
所有其他答案都说尝试 HAVING 而不是 WHERE,因为它是 MYSQL 问题。但是当我尝试 laravel havingRaw() 它仍然不起作用?
解决方案
您可以尝试使用havingRaw()
$lat = Auth::user()->lat;
$lon = Auth::user()->lon;
$users = DB::table('users')
->select(DB::raw("id, ASIN(SQRT( POWER(SIN(($lat - abs(lat))*pi()/180/2),2)+COS($lat*pi()/180 )*COS(abs(lat)*pi()/180)*POWER(SIN(($lon-lon)*pi()/180/2),2)))as distance"))
->havingRaw("'distance' < $radius")
->paginate($this->takeResults);
推荐阅读
- css - 从另一个元素引用元素元素选择器
- dax - 月切片器和筛选器在滚动数据 Power BI 上无法正常工作
- java - java.net.HttpClient 状态为 CLOSE_WAIT 的连接泄漏
- ios - Moya中的参数编码
- javascript - 谷歌浏览器控制台,显示javascript代码有问题
- sql - SQL-约束
- git - 创建 git 分支时出错 - 偏移量和长度超出了数组的范围
- facebook-javascript-sdk - Facebook leadgen webhook 订阅不起作用
- python - pip 以编程方式安装包,然后在不重新启动的情况下导入它
- modelica - 在初始化时只求解方程组一次