fixxxer, Саша, я вот что имею ввиду:
когда РСУБД мапится на объекты, мы можем писать:
Order::find($id)->customer->name
это приводит к 2м запросам по FK или одному с 2мя JOIN,
в sql вариантов структуры данных нет.
при обработке find($id)->customer->name в AR формируется 2 объекта schema, которые парсят "show create table", и по информации о полях и pk строятся SQL-запросы;
вызов sql-ориентированных методов schema захардкоден в самом AR
когда мапится NoSQL, мы не знаем что такое $order->customer->name: обращение ко вложенному документу customer, или фильтрация списка customer, вариантов несколько
чтобы такую ситуацию обработать, нужен макро-язык описания мапинга связей на AR-объекты без имен таблиц, без getPK(), но с поддержкой связи типа вложенность, и совсем другой алгоритм формирования запросов
абстрагироваться от SQL - значит, переписать реализацию AR почти полностью
тут бы или крестик снять и забить на nosql, или вводить DI/абстрактную фабрику, но ни то ни другое великий кормчий делать не захочет