Во-первых, в классе из приведенного вами примера нет объявленной переменной, называемой ролями, поэтому вы не можете написать это
... WHERE c.roles IN (:role)'
Так что в вашем классе User у вас должно быть что-то подобное
private $roles;
Также, как сказано здесь , вы можете иметь «несколько таблиц и присоединиться к ним в ваших запросах».
Таким образом, у вас будет 1 таблица для всех ваших ролей, один для пользователей и один с именем user_roles, где вы будете хранить роли для каждого пользователя. Следующим шагом, к которому я бы подошел, является поиск в новой таблице нужного мне пользователя, а затем извлечение всех строк, содержащих разные роли в массиве.
Также существуют другие способы - заявлено здесь . Метод, который я рекомендую при хранении массивов, состоит в том, чтобы иметь поле VARCHAR (или TEXT), а затем использовать (в вашем случае) Symfony компонент сериализатора до serialize () массив при сохранение в БД и десериализация () при необходимости.