Всем привет. Есть модель (если можно так назвать), состоящая из статичных методов. В каждом методе есть подключение к БД. Как это можно преобразовать, поскольку делать запрос каждый раз – не есть хорошо?
/** * Класс Category - модель для работы с категориями товаров */ class Category { public static function getCategoriesByName($ names) { // Соединение с БД $ db = Db::getConnection(); // Текст запроса к БД $ sql = 'SELECT * FROM categories WHERE link IN (?,?)'; // Используется подготовленный запрос $ result = $ db->prepare($ sql); $ result->bindParam(':link', $ link, PDO::PARAM_INT); // Указываем, что хотим получить данные в виде массива $ result->setFetchMode(PDO::FETCH_ASSOC); // Выполняем запрос $ result->execute($ names); // Возвращаем данные return $ result->fetchAll(); } public static function getChildrenCategoriesByParent($ id) { // Соединение с БД $ db = Db::getConnection(); // Текст запроса к БД $ sql = 'SELECT cat.id, cat.title, cat.link FROM categories AS cat WHERE cat.parent_id = :id'; // Используется подготовленный запрос $ result = $ db->prepare($ sql); $ result->bindParam(':id', $ id, PDO::PARAM_INT); // Указываем, что хотим получить данные в виде массива $ result->setFetchMode(PDO::FETCH_ASSOC); // Выполняем запрос $ result->execute(); // Возвращаем данные return $ result->fetchAll(); } /** * Возвращает текстое пояснение статуса для категории :<br/> * <i>0 - Скрыта, 1 - Отображается</i> * @param integer $ status <p>Статус</p> * @return string <p>Текстовое пояснение</p> */ public static function getStatusText($ status) { switch ($ status) { case '1': return 'Отображается'; break; case '0': return 'Скрыта'; break; } } /** * Добавляет новую категорию * @param string $ name <p>Название</p> * @param integer $ sortOrder <p>Порядковый номер</p> * @param integer $ status <p>Статус <i>(включено "1", выключено "0")</i></p> * @return boolean <p>Результат добавления записи в таблицу</p> */ public static function createCategory($ name, $ sortOrder, $ status) { // Соединение с БД $ db = Db::getConnection(); // Текст запроса к БД $ sql = 'INSERT INTO category (name, sort_order, status) ' . 'VALUES (:name, :sort_order, :status)'; // Получение и возврат результатов. Используется подготовленный запрос $ result = $ db->prepare($ sql); $ result->bindParam(':name', $ name, PDO::PARAM_STR); $ result->bindParam(':sort_order', $ sortOrder, PDO::PARAM_INT); $ result->bindParam(':status', $ status, PDO::PARAM_INT); return $ result->execute(); } }
Как правильно тут это реализовать?