Таблица oc_download
Таблица oc_download служит для управления цифровыми товарами в OpenCart. Она хранит метаданные файлов (название, маску имени файла), которые затем связываются с физическими товарами (oc_product) через таблицу связи oc_product_to_download. Это позволяет продавать электронные книги, программное обеспечение, музыку и другие цифровые продукты.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
download_id |
int |
Уникальный идентификатор цифрового товара (файла для скачивания). Первичный ключ с автоинкрементом. |
filename |
varchar(160) |
Имя файла, как оно хранится на сервере. Файлы обычно загружаются в директорию system/storage/download/.
|
mask |
varchar(128) |
Оригинальное имя файла, которое было у него на компьютере пользователя при загрузке. Это имя увидит покупатель при скачивании. |
date_added |
datetime |
Дата и время добавления файла в систему. |
Как это работает
Администратор заходит в раздел "Каталог" → "Загрузки" и добавляет новый файл. При загрузке система сохраняет файл в защищенную директорию system/storage/download/ (во избежание прямого доступа) и записывает его данные в таблицу oc_download. Поле filename содержит системное имя файла (часто с хэшем для уникальности), а поле mask - оригинальное, удобочитаемое имя.
После создания загрузки её можно привязать к одному или нескольким товарам в карточке товара, на вкладке "Ссылки". Эта связь устанавливается в таблице oc_product_to_download.
Когда покупатель приобретает товар, к которому привязана загрузка, система создает запись в таблице oc_order_download. В этой записи хранится ссылка на файл, количество разрешенных скачиваний, срок действия ссылки и уникальный код (mask), который используется для формирования безопасной URL-ссылки на скачивание. Покупатель видит эту ссылку в истории заказов в личном кабинете.
Важно: сама таблица oc_download не хранит историю заказов или факты скачиваний. Она содержит только справочник доступных файлов.
Пример SQL-запроса
Выбрать все цифровые товары, добавленные за последний месяц, и показать, к каким продуктам они привязаны:
SELECT d.download_id, d.mask, d.filename, d.date_added,
GROUP_CONCAT(pd.product_id) as product_ids,
GROUP_CONCAT(pd.name SEPARATOR ' | ') as product_names
FROM oc_download d
LEFT JOIN oc_product_to_download p2d ON (d.download_id = p2d.download_id)
LEFT JOIN oc_product_description pd ON (p2d.product_id = pd.product_id AND pd.language_id = 1)
WHERE d.date_added > DATE_SUB(NOW(), INTERVAL 1 MONTH)
GROUP BY d.download_id;
Смотрите также
-
таблицу
oc_product_to_download,
которая связывает товары и загрузки -
таблицу
oc_order_download,
которая управляет доступом к скачиванию для каждого заказа -
таблицу
oc_product,
к которой привязываются загрузки