Прямые запросы
Все модели содержат объект класса "Database", который позволяет делать прямые SQL запросы в базу данных. Данный объект доступен внутри объекта модели как свойство "$this -> db". Таблица модели доступна внутри как "$this -> table". Для постороения безопасных SQL запросов используется метод "secure", описанный в разделе Безопасность.
Существуют следующие методы для отправки запросов:
query() - исполняет полученный SQL запрос
//Все опубликованные записи текущей таблицы $result = $this -> db -> query("SELECT * FROM `".$this -> table."` WHERE `public`='1' ORDER BY `date` DESC"); while($row = $this -> db -> fetch($result, "ASSOC")) { ... }
getAll() - извлекает все записи и возвращает ассоциированный массив (если в таблице есть поле "id", то данное поле станет ключом в результирущем массиве)
//Все опубликованные комментариии к новости с id=32 $rows = $this -> db -> getAll("SELECT `name`,`date`,`content` FROM `news_comments` WHERE `news_id`='32' AND `public`='1' ORDER BY `date` DESC"); foreach($rows as $row) { ... }
getCount() - подсчет количества записей в таблице, возвращает целое число
//Общее количество статей $total = $this -> db -> getCount("articles"); //Количество активных товаров раздела $total = $this -> db -> getCount("products", "`catalog`='98' AND `active`='1'");
getRow() - извлекает 1 строку из таблицы, возвращает ассоциированный массив полей
//Все поля товара с id=527 $row = $this -> db -> getRow("SELECT * FROM `products` WHERE `id`='527'");
getColumn() - извлекает 1 колонку из таблицы, возвращает массив
//Заголовки всех событий за конкретную дату $titles = $this -> db -> getColunm("SELECT `title` FROM `events` WHERE `date`='2011-03-24'");
getCell() - извлекает 1 ячейку из таблицы
//Возвращает цену товара c названием "New product" $price = $this -> db -> getCell("SELECT `price` FROM `products` WHERE `name`='New product'");
Предыдущий раздел
Конструктор запросов