口才无法识别我的别名

时间:2018-06-23 18:32:23

标签: laravel laravel-5 eloquent

我要查询具有一定距离的用户:

$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();时,我的查询有效吗?

2 个答案:

答案 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);