Раньше у меня была такая же проблема, в итоге я построил таблицы отношений для обработки разных групп с разными полями.Затем я немного изменил код profile (), чтобы присоединить дополнительную таблицу отношений в соответствии с настройками группы пользователей.
Я бы начал с создания реляционной базы данных.
пример:
**volunteers table**
id
user_id
languages
**organizations table**
id
user_id
mission
Затем, в зависимости от группы пользователей, присоедините таблицу в функции profile ().
Надеюсь, это поможет!