我要查询具有一定距离的用户:
$q->addSelect(DB::raw(
'( acos(cos(radians(' . Auth::user()->latitude . '))' .
'* cos( radians( users.latitude ) )' .
'* cos( radians( users.longitude )' .
'- radians(' . Auth::user()->longitude . ') )' .
'+ sin( radians(' . Auth::user()->latitude . ') )' .
'* sin( radians( users.latitude ) ) ) ) as distance'
));
$q->having('distance', '<', $search->distance);
我收到此错误:未找到列:1054“具有子句”中的未知列“距离” 。
当我在PhpMyAdmin中运行查询并返回$q->toSql();
时,我的查询有效吗?
答案 0 :(得分:0)
您应该考虑进行子查询。
是否可以转储您要执行的查询?
\DB::enableQueryLog()
...
dd(\DB::getQueryLog());
答案 1 :(得分:0)
先前在查询构建器中使用过select()方法时,将使用addSelect()方法,如果不是这种情况,请尝试将其更改为
$q->select('( 6371 * acos(cos(radians(' . Auth::user()->latitude . '))' .
'* cos( radians( users.latitude ) )' .
'* cos( radians( users.longitude )' .
'- radians(' . Auth::user()->longitude . ') )' .
'+ sin( radians(' . Auth::user()->latitude . ') )' .
'* sin( radians( users.latitude ) ) ) ) as distance')->having('distance', '<', $search->distance);
或
$q->selectRaw('( 6371 * acos(cos(radians(' . Auth::user()->latitude . '))' .
'* cos( radians( users.latitude ) )' .
'* cos( radians( users.longitude )' .
'- radians(' . Auth::user()->longitude . ') )' .
'+ sin( radians(' . Auth::user()->latitude . ') )' .
'* sin( radians( users.latitude ) ) ) ) as distance')->having('distance', '<', $search->distance);