Вы работаете здесь над объектами, и вы должны использовать clone
:
$user = User::where('status',1);
$i = 10;
while($i < 50)
{
$query = (clone $user)->having('distance', '<=', $i);
if($query->get()->count())
break;
$i = $i+5;
}
Кроме того, вы используете:
$query->get()->count()
по каким причинам вы получаете все записи, соответствующие запросу из базы данных, и рассчитываете их количество. Если вам нужно просто подсчитать их, лучше использовать просто:
$query->count()