Daria Motorina, createQueryBuilder('l')->update() позволяет обновить сразу много строк. Но флэш не дает результата. Обновление по одной строке будет медленно. Как иначе делать я не знаю.
А как вы себе представляете то, что unit of work, вдруг, каким-то магическим образом поймет, какие конкретно записи вы обновили через прямое выполнение запроса? Доктрина не может проанализировать запрос и изменить сущности, находящиеся в его пуле соответствующем образом. Это крайне сложно в реализации технически (в случае такого простого запроса, как у вас - все, казалось бы, достаточно прозрачно, но а что если появятся подзапросы? Как их анализировать? А если результат выполнения запроса не предсказуем?). Трудно представить, насколько бы усложнился и замедлился рантайм доктрины при попытке реализовать такую фичу, учитывая, что эта orm и без того не может во многие вещи, связанные даже с построением запросов.
Опишите задачу полностью и тогда станет ясно, что вам посоветовать. Вы не в ту сторону копаете.