Можно ли написать свой драйвер для доктрины, чтобы данные она доставала не из БД, и насколько это рационально?
Т.е. например я хочу работать с сущностями через доктрину, но чтобы доктрина брала инфу для этих сущностей например через апи какого-то сервиса, или из elasticsearch или из любого другого источника отличного от БД
Можно. Но, на мой взгляд, лучше извлекать данные посредством API и сохранять в локальную БД, иногда делая синхронизацию (через некоторые промежутки времени). А доктрину испрользовать уже с локальной базой.
why7, В таком случае вам точно не нужен драйвер. Кстати, если не будете менять данные от апи - обозначайте соответствующие сущности атрибутом "только для чтения" (@Entity(readOnly="true"): docs.doctrine-project.org/projects/doctrine-orm/en....