ORMs earn their keep on create-read-update-delete. The trouble starts when they hide the query, a report that silently fetches 40,000 rows to count 12, or an update that issues one statement per record.
My rule: CRUD through the ORM, anything else in SQL I can read. Reports, bulk operations, migrations, anything touching financial or official records, written by hand, reviewed line by line.
The reason isn't purity, it's auditability. When an LGU asks why a report took nine seconds, 'the ORM generated it' is not an answer. A written query is. You can EXPLAIN it, index for it, and hand it to the next maintainer.
This isn't anti-ORM. It's pro-visibility. The abstraction is a tool for the common case; the critical path deserves to be explicit.