Таблица oc_custom_field_customer_group
Таблица oc_custom_field_customer_group является связующей таблицей между дополнительными полями (oc_custom_field) и группами покупателей (oc_customer_group). Она определяет видимость и обязательность заполнения кастомных полей для разных групп клиентов.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
custom_field_id |
int |
Идентификатор дополнительного поля. Внешний ключ, ссылается на oc_custom_field.
|
customer_group_id |
int |
Идентификатор группы покупателей. Внешний ключ, ссылается на oc_customer_group.
|
required |
tinyint(1) |
Флаг обязательности заполнения поля: 1 - поле обязательно для заполнения, 0 - поле не обязательно.
|
Как это работает
При создании или редактировании дополнительного поля в админ-панели OpenCart (Система → Пользователи → Поля) администратор может настроить, для каких групп покупателей это поле будет отображаться и будет ли оно обязательным для заполнения.
Например, можно создать поле "ИНН" и сделать его обязательным только для группы "Юридические лица", а для группы "Физические лица" скрыть это поле полностью или сделать его необязательным.
Каждая запись в этой таблице представляет собой связку: "поле X для группы Y должно быть обязательным/необязательным". Если для определенной пары custom_field_id - customer_group_id записи в таблице не существует, это означает, что данное поле не отображается для пользователей этой группы.
При регистрации или редактировании профиля система проверяет группу текущего пользователя и показывает только те дополнительные поля, которые разрешены для его группы, валидируя обязательные к заполнению.
Пример SQL-запроса
Получить список всех дополнительных полей, доступных для группы покупателей с ID 1, с указанием их обязательности:
SELECT cfcd.name, cfcg.required
FROM oc_custom_field_customer_group cfcg
LEFT JOIN oc_custom_field cf ON (cfcg.custom_field_id = cf.custom_field_id)
LEFT JOIN oc_custom_field_description cfcd ON (cf.custom_field_id = cfcd.custom_field_id)
WHERE cfcg.customer_group_id = 1
AND cfcd.language_id = 1;
Смотрите также
-
таблицу
oc_custom_field,
которая хранит основные данные дополнительных полей -
таблицу
oc_customer_group,
которая содержит группы покупателей -
таблицу
oc_custom_field_description,
которая хранит многоязычные описания полей -
таблицу
oc_custom_field_value,
которая содержит значения для полей типа "select" и "radio"