Интересно, зачем юзать ОРМ и тут же ломать его вкручивать SQL_CALC_FOUND_ROWS, который есть расширением стандарта от MySQL? При переходе на тот же PostgreSQL Вам надо будет переписать все эти запросы…
Отличный механизм, спасибо, не знал о нем. И узнал главное в тот момент, когда начал делать более грамотную пагинацию, и это уже не поможет — пропуск первых записей делается во WHERE, а LIMIT всегда начинается с 0, этим исключаю попадание в список уже прочитанных записей при переходе на следующую страницу, если за время просмотра добавились новые в начало.
Пагинация в Doctrine (Использование SQL_CALC_FOUND_ROWS)