dqmhgz5848 2014-04-16 14:06
浏览 20
已采纳

mysql距离查询不能在laravel下工作

I am trying to find the distance between the $eastings $northings coordinates I have stored and the Eastings / Northings coordinates I have stored in a table in mysql. I am using Laravel. For some reason the query is not working. Here is the code:

public function postAnalysis(){

$relevant_home = Input::get('relevant_homes');

$asset = Home::where('Home_name', '=' , $relevant_home)->first();

$Eastings   = $asset->Eastings;
$Northings  = $asset->Northings;

/*
$competitors = Home::raw('SELECT SQRT(POW($Eastings - `Eastings`,2) + POW($Northings - `Northings`,2)) as distance FROM homes HAVING distance <=10 ORDER BY distance ASC')->get();
echo $competitors;
*/



$competitors = DB::table('homes')
                -> select(DB::raw('SQRT(POW('.$Eastings.' - Eastings,2) + POW('.$Northings.' - Northings,2)) AS distance'))
                -> where('distance', '<', 10)
                -> get();

echo $competitors;


}

The error shown is:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'distance' in 'where clause' (SQL: select SQRT(POW(390120 - Eastings,2) + POW(298935 - Northings,2)) AS distance from `homes` where `distance` < 10)
  • 写回答

1条回答 默认 最新

  • dougongnan2167 2014-04-16 15:35
    关注

    If you're selecting based on a calculated field (generated via DB::raw() in your select list), rather than on an actual table column that is stored on the database, then you need to use a having() clause rather than where() clause.

    This isn't specifically a Laravel/Eloquent or an ORM issue, but is a general requirement for SQL.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目