Під час розробки інтернет-магазину на OpenCart рано чи пізно виникає потреба працювати безпосередньо з базою даних. Це може бути додавання нових полів, оптимізація запитів або створення власної логіки обробки замовлень.
Структура бази даних
OpenCart використовує реляційну базу даних (зазвичай MySQL), де кожна сутність зберігається в окремій таблиці.
Основні таблиці:
Замовлення:
oc_order
oc_order_product
oc_order_option
oc_order_history
Товари:
oc_product
oc_product_description
oc_product_option
Користувачі:
oc_user
oc_customer
Як правильно працювати з базою даних
В OpenCart є вбудований клас для роботи з БД — $this->db.
Отримання даних
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order");
foreach ($query->rows as $row) {
// обробка даних
}
Оновлення даних
$this->db->query("
UPDATE " . DB_PREFIX . "order
SET ex_f_date = '" . $this->db->escape($date) . "'
WHERE order_id = '" . (int)$order_id . "'
");
Додавання власного поля
if (!$this->db->query("SHOW COLUMNS FROM `" . DB_PREFIX . "order` LIKE 'ex_f_date'")->num_rows) {
$this->db->query("
ALTER TABLE `" . DB_PREFIX . "order`
ADD `ex_f_date` DATETIME NULL
");
}
Безпека
Використовуйте (int) для чисел
Використовуйте $this->db->escape() для рядків
Оптимізація через JOIN
$query = $this->db->query("
SELECT o.order_id, op.name, op.quantity
FROM " . DB_PREFIX . "order o
LEFT JOIN " . DB_PREFIX . "order_product op
ON o.order_id = op.order_id
");
Індекси
ALTER TABLE oc_order ADD INDEX (ex_f_date);
Архітектура
model — робота з БД
controller — логіка
view — відображення
Висновок
Робота з базою даних в OpenCart — це основа для створення кастомного функціоналу, оптимізації та масштабування магазину.