我正在尝试使用Laravel Eloquent进行原始选择。但遗憾的是,我不能对别名“SELECT AS”字段(距离)使用WHERE条件。
我在“where子句”中找到“未找到列:1054未知列'距离'”错误。
如何使用“距离”作为Eloquent的条件?
这是我的代码
$firebaseUsers = FirebaseUser::when( (!empty($distance)) , function ($query) use ($distance, $user) {
return $query->select('firebase_users.*', DB::raw("ST_Distance_Sphere( POINT(".$user->latitude.", ".$user->longitude."), POINT(latitude, longitude) ) as distance") )
->whereNotNull('latitude')
->whereNotNull('longitude')
->whereRaw('distance <= ?', [$distance * 1000]);
})
->where('firebase_id', '!=', $user->firebase_id)
->orderByRaw( "FIELD(paid_status, 'yes', 'no')" )
->orderBy('last_online', 'DESC')
->paginate(30);
答案 0 :(得分:2)
您需要将having()
用于派生列:
->having('distance', '<=', $distance * 1000);
但分页不适用于having()
:https://github.com/laravel/framework/issues/3105