Helicopter doesn't rotate on axis

I have a helicopter movement problem; the helicopter moves forward/backward/left/right…etc fine and even rotates left/right, but when it rotates, it moves around an invisible axis away from the helicopter, as if it has a turning circle like a car, rather than rotating on the spot or pivoting around the rotor.

vision = gamepad.rightStick.ReadValue();
transform.rotation = Quaternion.Euler(transform.eulerAngles += new Vector3(0f, vision.x * 100f * Time.deltaTime, 0f));

The above is my turning code. Please excuse the x/y/z axis being wrong in the first place, that’s another problem for another day.

What you are describing is exactly the behavior your code produces.
You are changing the world-rotation (transform.rotation) by adding to the y value of your world-rotation. When your Helicopter is not on XZ 0,0 within your world, then you will rotate around the center of your world this way. What you want instead is add to the y value of your local rotation.

Try something like this instead:

transform.localRotation = Quaternion.Euler(transform.localRotation.eulerAngles += new Vector3(0f, vision.x * 100f * Time.deltaTime, 0f));