I need to grab the vehicles whose relation \'dealer\' is having distance < 200
Vehicle::join(\'dealers\', \'vehicles.dealer_id\', \'=\', \'dealers.id\')
having
and havingRaw
doesn't have access to generated fields in the query
see this example from laravel docs
Your query will have to lookk like this
Vehicle::join('dealers', 'vehicles.dealer_id', '=', 'dealers.id')
->select(DB::raw("dealers.id, ( cos( radians(latitude) ) * cos( radians( longitude ) ) ) AS distance"))
->havingRaw('(cos(radians(latitude)) * cos(radians(longitude))) < 200');