使用列名作为参数在whereRaw中调用方法

时间:2016-08-03 13:03:53

标签: php mysql laravel-5

我需要调用以下方法进行查询:

public function getDistanceFromLatLonInKm($lat1,$lon1,$lat2,$lon2) {
  ...
  $d = R * c; // Distance in km
  return $d;
}

我在尝试添加'纬度'和'经度'作为参数时出现'语法错误,意外'。''

public function show($lon, $lat, $radio) {
  $results = Viaje::where($otherStuff)
                  ->whereRaw( 'radio + ' . $radio . ' <= ' . $this->getDistanceFromLatLonInKm($lat, $lon, . 'latitude, longitude)');
  return response()->json($results);
}

通过这种方式我得到错误500:

public function show($lon, $lat, $radio) {
  $results = Viaje::where($otherStuff)
                ->whereRaw( 'radio + ' . $radio . ' <= ' . $this->getDistanceFromLatLonInKm($lat, $lon, 32, 2));
  return response()->json($results);
}

如何使该查询将$ lat,$ lon作为变量和'纬度','经度'作为每个寄存器的值。

由于

1 个答案:

答案 0 :(得分:0)

使用此

public function show($lon, $lat, $radio) 
{   
    $results = Viaje::where($otherStuff)->whereRaw( 'radio + ' . $radio . ' <= ' . $this->getDistanceFromLatLonInKm($lat, $lon, 'latitude', 'longitude'));   
    return response()->json($results); 
}