Yes, all that’s possible. But it’s not straightforward in the majority of ORMs.

Almost sounds like ORMs are a bad idea

Right, and ORMs are the main cause of the N+1 problem, and atrocious database performance in general.

For anything that isn't just a basic row lookup from a single table, you should really just be writing the SQL yourself.