Поскольку вы используете Doctrine, постарайтесь не думать слишком много на уровне RDBMS (по крайней мере, не в большинстве случаев).
Если у вас есть две сущности со связью ManyToMany, вам следует забыть о суррогатном ключе. На самом деле, вы должны в значительной степени игнорировать тот факт, что таблица отношений существует. У вас просто есть два связанных типа сущностей.
Теперь, если вам нужно хранить метаданные о самой взаимосвязи (например, о дате, когда значок был присвоен пользователю), вы выходите за рамки простого ManyToMany и вам нужно смоделировать эту взаимосвязь самостоятельно - создавая новый тип сущности (например, UserBadge). Эта сущность, конечно, будет иметь идентификатор.
Вы используете ORM, думайте о сущностях, а не о таблицах (большую часть времени)!