Я всегда говорю, что я юзаю ORM, когда использую запросы вида:
$this->select()->join()->where()->andWhere()
Однако, как я почитал на ресурсах, это больше смахивает на DBAL. Как я понимаю, что DBAL - это то, что не нужно переживать какой СУБД вы пользуетесь, вы должны построить запрос вида какой я написал выше, где-то в конфигах указать свою СУБД, и оно само сможет написать корректный запрос за вас. Также, как я понимаю, при юзаже DBAL, возвращаются не объекты, а массивы, например, а при юзаже ORM - всегда объекты.
Собственно хотелось бы понять, я прав, или нет?) Какие коренные отличия между DBAL и ORM?
Некорректно сравнивать тёплое с мягким. Так и здесь: DBAL, как вы правильно написали - слой абстракции, представляющий единый интерфейс для работы с различными реализациями БД.
ORM - штука, которая позволяет работать с объектами и связями в БД как с сущностями, не заботясь о том, из каких именно таблиц и полей заполняется сущность.
У вышеупомянутой Doctrine тоже есть свой DBAL, но это не мешает ей быть ORM :)