Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在where子句中使用计算别名列的Laravel/MySQL_Php_Mysql_Laravel_Orm_Eloquent - Fatal编程技术网

Php 在where子句中使用计算别名列的Laravel/MySQL

Php 在where子句中使用计算别名列的Laravel/MySQL,php,mysql,laravel,orm,eloquent,Php,Mysql,Laravel,Orm,Eloquent,请有人帮我输入下面的代码。我得到一个错误,因为冒号“距离”不存在,即使我已经定义为 public static function getByDistance($lat, $lng, $distance) { $result = Auction::join('users', 'auctions.user_id', '=', 'users.id') ->select(DB::raw('users.id', '( 3959 * acos( cos( radians(' . $

请有人帮我输入下面的代码。我得到一个错误,因为冒号“距离”不存在,即使我已经定义为

public static function getByDistance($lat, $lng, $distance)
{
  $result = Auction::join('users', 'auctions.user_id', '=', 'users.id')
        ->select(DB::raw('users.id', '( 3959 * acos( cos( radians(' . $lat . ') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(' . $lng . ') ) + sin( radians(' . $lat .') ) * sin( radians(lat) ) ) ) as distance'))
        ->where ('distance', '<', $distance)
        ->get();

return $result;    

}
公共静态函数getByDistance($lat、$lng、$distance)
{
$result=Auction::join('users','auctions.user_id','=','users.id'))
->选择(DB::raw('users.id','(3959*acos(弧度('.$lat'))*cos(弧度(lat))*cos(弧度(lng)-弧度('.$lng'))+sin(弧度('.$lat'))*sin(弧度(lat)))作为距离)

->其中('distance','MySQL在一些版本之前放弃了与别名列的这种比较

它只是用于排序、分组和存储

您可以使用:

whereRaw('(子查询)<?',['distance'=>$distance])
我建议对空值使用coalesce

编辑


另外,提供的另一个答案也有效。

have可用于比较别名的值

having('distance', '<', $distance);
having('distance'),请查看以下答案: