В этой части будем разбираться с файлом модели (т.е. функций запросов в БД, так же считаем, что Вы прочиталя предыдущую часть)
Для админской части модуля коментов нужно 4 функции:
- Получение из БД всех записей
- Добавление комента
- Редактирование комента
- Удаление комента
Начинается модуль всегда так:
<!--?php class ModelCommentsComments extends Model { </pre> <p>Схема названия класса такая же, как в названии контроллера.</p> <pre lang="php"> public function getAll () { $comments = array(); $this->db->query("CREATE TABLE IF NOT EXISTS " . DB_PREFIX . "comments ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `image` VARCHAR(255) NOT NULL, `text` TEXT NOT NULL, PRIMARY KEY(`id`) )"); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "comments ORDER BY id"); foreach ($query->rows as $result) { $comments[] = $result; } return $comments; } </pre> <p>Функция getAll будет получать из БД все записи:</p> <p>Для начала создается массив, куда будем записывать результат.<br ?--> Затем ключевое для opencart: $this->db->query Это значит, что нужно обратиться к классу Model (так как наш класс наследуется от модели), в ней найти объект db - который имеет в себе функции для безопасного общения с базой. Используется функция query - запрос, в котором аргументами выступает обычный mySql запрос. |
Рассмотрим сам запрос, по человечески он выглядит так:
“Если не существует таблицы префикс_всех_таблиц_вашей_бд_comments, то создать ее. Создать в ней столбцы id name image text с параматрами. Главный ключ – id”
Чтобы научиться писать такие строчки – ищите по словам “синтаксис mysql, примеры”
Эта строчка не будет выполнена, если таблица есть – т.е. при любом кроме первого вызове этой функции.
Сам запрос следует далее
$this->db->query("SELECT * FROM " . DB_PREFIX . "comments ORDER BY id"); |
Опять таки “по человечески”: Выбрать все записи из такой то таблицы, сортируя по id.
И этот результат выборки с базы с помощью цикла foreach разбиваем на строчки и все их помещаем в массив $comments
Остальные функции аналогичны и не особо сложные. Специфики OpenCart нету, сложности могут возникнуть только в запросах к БД.
public function addNew ($name,$image,$text){ $this->db->query("INSERT INTO " . DB_PREFIX . "comments (`name`, `image`, `text`) VALUES ('".$name."','".$image."','".$text."')"); return 'added'; } |
public function updateRow ($id,$name,$image,$text){ $this->db->query("UPDATE " . DB_PREFIX . "comments SET name = '".$name."', image= '".$image."', text = '".$text."' WHERE id = '" . (int)$id . "'"); return 'updated'; } |
public function deleteRow ($id){ $this->db->query("DELETE FROM " . DB_PREFIX . "comments WHERE id = ".$id); return 'deleted'; } |
Таким образом строятся все файлы модели. Это просто функции запросов к БД.
Ниже можно скачать этот файл (переименован в .txt) и прочитать другие части.
Как написать модуль OpenCart (Часть 1)
Как написать модуль OpenCart (Часть 3)
Как написать модуль OpenCart (Часть 4)
comments.txt