Таблица oc_review
Таблица oc_review хранит текстовые отзывы, которые оставляют покупатели о товарах. Каждый отзыв включает оценку (рейтинг), текст отзыва, информацию об авторе и статус модерации.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
review_id |
int |
Уникальный идентификатор отзыва. Первичный ключ таблицы. |
product_id |
int |
Внешний ключ, связывающий отзыв с конкретным товаром. Ссылается на oc_product.
|
customer_id |
int |
Внешний ключ, идентифицирующий автора отзыва (если он авторизован). Ссылается на oc_customer. Может быть 0, если отзыв оставлен гостем.
|
author |
varchar(64) |
Имя автора отзыва. Для авторизованных пользователей обычно копируется из учётной записи, для гостей - вводится вручную. |
text |
text |
Текст отзыва, оставленный покупателем. |
rating |
int |
Оценка товара по числовой шкале. Обычно от 1 до 5 звёзд.
|
status |
tinyint(1) |
Статус отзыва, определяющий, виден ли он на сайте. 0 - отключен (ожидает moderation), 1 - включен (одобрен).
|
date_added |
datetime |
Дата и время добавления отзыва. |
date_modified |
datetime |
Дата и время последнего изменения отзыва (например, при одобрении администратором). |
Как это работает
Покупатель на странице товара оставляет отзыв, заполняя форму. Данные из формы записываются в таблицу oc_review. Поле status по умолчанию устанавливается в 0 (отключен), если в настройках магазина включена премодерация отзывов.
Администратор в панели управления видит новые отзывы, ожидающие проверки (status = 0). После проверки администратор может одобрить отзыв (установить status = 1), после чего он становится виден на сайте, или удалить его.
На фронтенде средний рейтинг товара рассчитывается на основе поля rating всех одобренных отзывов для данного product_id.
Пример SQL-запроса
Выбрать все одобренные отзывы для конкретного товара с информацией о товаре:
SELECT r.review_id, r.author, r.rating, r.text, r.date_added, pd.name as product_name
FROM oc_review r
LEFT JOIN oc_product_description pd ON (r.product_id = pd.product_id)
WHERE r.product_id = 42
AND r.status = 1
ORDER BY r.date_added DESC;
Смотрите также
-
таблицу
oc_product,
которая хранит информацию о товарах -
таблицу
oc_customer,
которая хранит данные зарегистрированных покупателей