#php #codeigniter #crud
#php #codeigniter #crud
Вопрос:
Я использую Codeigniter с Ion Auth для управления пользователями. Я хотел бы создать две разные пользовательские роли — одну для добровольцев и одну для организаций. Я знаю, что могу использовать Ion Auth groups
для таких вещей, как контроль доступа, но какой был бы хороший способ добавить поля для разных типов пользователей (например, у пользователя-добровольца будет поле «языки, на которых говорят», в то время как у организации будет поле «миссия»)? Должен ли я расширять класс Ion Auth для каждого нового типа пользователя и обрабатывать CRUD отдельно для каждого типа или использовать поле «группы» и идентификатор пользователя для ссылки на поля в другой таблице? Есть идеи относительно подхода к этой распространенной проблеме?
Ответ №1:
Я бы рекомендовал просто добавить все необходимые поля в мета-таблицу и обновлять только те, которые вам нужны для каждой группы пользователей. Если вам нужно несколько групп для каждого пользователя, ознакомьтесь с Ion Auth v2.
Комментарии:
1. Как бы вы предложили мне хранить информацию для пользователей, которые принадлежат к нескольким группам? Не могли бы вы создать две отдельные мета-таблицы для каждой группы, согласно предложению add tpae выше, или одну мета-таблицу со столбцом «group_id», как вы сказали ранее? Например, у меня может быть пользователь в качестве «покупателя», «продавца» или обоих. В мета-таблице могут быть
id
,user_id
,group_id
field_key
,field_value
и, ,,. Я чувствую, что последний метод был бы неэффективным и неорганизованным, а первый метод лучше. Что вы думаете? Есть ли еще лучшее решение?
Ответ №2:
У меня была такая же проблема раньше, в итоге я создавал таблицы отношений для обработки разных групп с разными полями. Затем я немного изменил код profile (), чтобы присоединиться к дополнительной таблице отношений в соответствии с настройками группы пользователя.
Я бы начал с создания реляционной базы данных.
пример:
**volunteers table**
id
user_id
languages
**organizations table**
id
user_id
mission
Затем, в зависимости от группы пользователей, присоединитесь к таблице в функции profile().
Надеюсь, это поможет!