Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
54 of 152 menu
Бесплатный курс: Практика на Реальных Проектах и Работы в Портфолио! Начало 11 ноября. Жми для записи!

Таблица oc_cart

Таблица oc_cart используется для хранения содержимого корзин покупателей до момента оформления заказа. Она позволяет сохранять выбранные товары даже после закрытия браузера, благодаря использованию уникальных идентификаторов сессий для гостей и привязке к учётной записи для авторизованных пользователей.

Поля

Поле Тип данных Описание
cart_id int Уникальный идентификатор записи в корзине (автоинкремент).
api_id int Идентификатор API-пользователя, если добавление в корзину было выполнено через API. Ссылается на oc_api.
customer_id int Идентификатор зарегистрированного покупателя. Ссылается на oc_customer. Для неавторизованных пользователей значение равно 0.
session_id varchar(32) Уникальный идентификатор сессии для неавторизованных (гостевых) покупателей. Позволяет сопоставить корзину с конкретным браузером.
product_id int Идентификатор товара, добавленного в корзину. Ссылается на oc_product.
recurring_id int Идентификатор профиля recurring-платежей (для товаров с регулярной оплатой), если он был добавлен в корзину.
option text Сериализованный массив (в формате JSON) с выбранными опциями для товара. Хранит ID опций и их значений.
quantity int Количество единиц данного товара, добавленное в корзину.
date_added datetime Дата и время добавления товара в корзину.

Как это работает

При добавлении товара в корзину система создает запись в таблице oc_cart. Механизм работы отличается для авторизованных и неавторизованных пользователей:

Для зарегистрированных пользователей (customer_id > 0) корзина привязывается напрямую к их учётной записи. Это позволяет синхронизировать корзину между разными устройствами после авторизации.

Для гостевых пользователей (customer_id = 0) используется идентификатор сессии (session_id), который хранится в cookies браузера. Это позволяет сохранять корзину в течение жизни сессии или дольше, если используется длительная сессия.

При оформлении заказа все товары из корзины переносятся в таблицы заказа (oc_order_product и др.), а соответствующие записи из oc_cart удаляются. Для очистки старых, неиспользуемых корзин в OpenCart есть система CRON-задач.

Пример SQL-запроса

Посмотреть содержимое корзины для конкретного покупателя можно следующим запросом:

SELECT c.cart_id, c.quantity, c.date_added, p.product_id, pd.name FROM oc_cart c LEFT JOIN oc_product p ON (c.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE c.customer_id = 42 ORDER BY c.date_added DESC;

Смотрите также

  • таблицу oc_customer,
    в которой хранятся данные покупателей
  • таблицу oc_product,
    в которой хранятся данные о товарах
  • таблицу oc_order,
    в которой хранятся оформленные заказы
  • таблицу oc_order_product,
    в которую переносятся товары из корзины при оформлении заказа