Так как у вас не просто первый класс ссылается на второй и второй на первый, а через третью сущность, то Doctrine неверно их обрабатывает. В таком случаи стоит убрать вывод поля
user.assignedTickets, как раз через упомянутый вами массив
[AbstractNormalizer::ATTRIBUTES => ['assignedUsers' => ['assignedTickets']]
, тогда структура будет плоская, но без ухода в рекурсию.
Есть где посмотреть примеры как на относительно реальных примерах работают с сериализатором этим?
Только
документация, а дальше уже нужно просто продумывать все запросы. Если говорить относительно этйо задачи, я бы на вашем месте сделал просто один метод в классе репозитория билетов и в нем реализовал SQL-запрос в обход Doctrine, так как в итоге необходимо получить json, а использование ORM дает большие накладные расходы и неоптимальные пачки запросов к БД.