Прямые запросы
Все модели содержат объект класса 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() - извлекает строку из таблицы, возвращает ассоциированный массив полей
//Все поля товара с id=527
$row = $this -> db -> getRow("SELECT * FROM `products` WHERE `id`='527'");
getColumn() - извлекает колонку из таблицы, возвращает массив
//Заголовки всех событий за конкретную дату
$titles = $this -> db -> getColunm("SELECT `title` FROM `events` WHERE `date`='2011-03-24'");
getCell() - извлекает ячейку из таблицы
//Возвращает цену товара c названием 'New product'
$price = $this -> db -> getCell("SELECT `price` FROM `products` WHERE `name`='New product'");
Предыдущий раздел
Конструктор запросов