proper orm allow you to specify how to process relationships, best one on a per query basis and not on a per model basis. then they aggregate the table resulting from the join presenting a deduplicated view of the root object and all the related one fetched.
This is a major abstraction leak and is very rarely as simple as you describe it. The only time I've seen it be this simple is with people who design their databases entirely around an ORM and in that case they're already leaving a large amount of performance on the table which you can no longer recover by reaching behind the scenes to help the ORM figure out what it needs to do.