Таблица oc_product_to_download
Таблица oc_product_to_download является промежуточной таблицей многие-ко-многим, которая связывает товары из таблицы oc_product с цифровыми товарами (файлами для скачивания) из таблицы oc_download. Эта связь позволяет одному товару иметь несколько файлов для скачивания, а одному файлу быть привязанным к нескольким товарам.
Поля
| Поле | Тип данных | Описание |
|---|---|---|
product_id |
int |
Идентификатор товара. Внешний ключ, ссылается на oc_product.
|
download_id |
int |
Идентификатор цифрового товара (файла). Внешний ключ, ссылается на oc_download.
|
Как это работает
В админ-панели OpenCart при редактировании товара существует вкладка "Ссылки". В этой вкладке есть раздел "Файлы для скачивания", где администратор может привязать к товару один или несколько цифровых товаров.
Когда покупатель приобретает товар, к которому привязаны файлы для скачивания, эти файлы становятся доступными в его личном кабинете в разделе "История заказов" → "Загрузки". Покупатель может скачать файл ограниченное количество раз и в течение определенного срока, который настраивается для каждого файла отдельно.
Таблица oc_product_to_download не хранит информацию о самих файлах или товарах - она содержит только связи между ними. Данные о файлах (название, маска, дата добавления) хранятся в таблице oc_download, а информация о товарах - в таблице oc_product.
Один товар может иметь несколько привязанных файлов для скачивания. Это полезно, когда цифровой товар состоит из нескольких файлов (например, основная программа, документация и патч). Также один файл может быть привязан к нескольким товарам, что позволяет переиспользовать цифровые товары без их дублирования.
Пример SQL-запроса
Получить все файлы для скачивания для конкретного товара:
SELECT d.download_id, d.filename, dd.name
FROM oc_product_to_download p2d
LEFT JOIN oc_download d ON (p2d.download_id = d.download_id)
LEFT JOIN oc_download_description dd ON (d.download_id = dd.download_id)
WHERE p2d.product_id = 42 AND dd.language_id = 1;
Проверить, какие товары используют определенный файл для скачивания:
SELECT p.product_id, pd.name
FROM oc_product_to_download p2d
LEFT JOIN oc_product p ON (p2d.product_id = p.product_id)
LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id)
WHERE p2d.download_id = 15 AND pd.language_id = 1;
Смотрите также
-
таблицу
oc_download,
которая хранит информацию о файлах для скачивания -
таблицу
oc_download_description,
которая содержит описания файлов на разных языках -
таблицу
oc_product,
которая содержит основную информацию о товарах -
таблицу
oc_order_download,
которая отслеживает историю скачиваний покупателями