В этой статье мы рассмотрим класс для работы с базами данных, рассмотрим его основные методы и как ими пользоваться!

Для того что бы работать с базой данных нам нужно получить объекта класса JDatabaseDriver.
Для получение этого объекта нам нужно написать следующий код:

$db = JFactory::getDbo();

Данный код можно использовать в любом месте нашей CMS, но если мы пишем MVC компонент то альтернативой данной записи только для моделей может быть следующий вызов:

$db = $this->getDbo();

После получения объекта класса JDatabaseDriver мы можем использовать методы этого класса для работы с нашей базой!

 

Для начала нам стоит обратить внимание на три важных метода:
1. getQuery($new = false) - метод для получения объекта класса JDatabaseQuery который является конструктором запросов. Подробнее про этот класс можно прочитать здесь
2. setQuery($query, $offset = 0, $limit = 0) - устанавливает нашу строку для последующего выполнения у этого метода есть два необязательных параметра:
$offset - с какой записи начинать выборку
$limit - сколько записей выбирать
то есть например если мы выполним следующий код:

$db = JFactory::getDbo();
$list = $db->setQuery( 'SELECT * FROM #__content', 10, 20 )->loadObjectList();

то результатом будет выборка 20 записей с таблички #__content и выборка начнется с 10 записи в этой таблице
3. execute() - выполняет последний установленный через метод setQuery запрос! Этот метод подходит если нам нужно выполнить INSERT, DELETE, UPDATE данных в базу, для выборки данных используют другие методы!

 

Итак для начало рассмотрим методы для обработки строковых данных для запроса:

Пример:
echo $db->escape( "hello ' word" );
Результат работы: Вывод строки: hello \' word
Пример:
echo 'SELECT * FROM #__content WHERE title=' . $db->quote( 'Тестовый материал' );
Результат работы: SELECT * FROM #__content WHERE title='Тестовый материал'
В Joomla 3 у этого метода есть альтернатива $db->q( $string )

 

Теперь рассмотрим методы для получения результатов запроса:

Пример:
$list = $db->setQuery( 'SELECT id, title FROM #__content' )->loadAssoc();
Результат работы в переменной $list следующее содержимое:
Array
(
    [id] => 1
    [title] => О студии
)
Пример:
$list = $db->setQuery( 'SELECT id, title FROM #__content' )->loadColumn( 1 )
Результат работы в переменной $list следующее содержимое:
Array
(
    [0] => О студии
    [1] => Описание CMS Joomla
)
Пример:
$result = $db->setQuery( 'SELECT id, title FROM #__content' )->loadNextObject()
Результат работы в переменной $result следующее содержимое:
stdClass Object
(
    [id] => 1
    [title] => О студии
)
При повторном выполнении данного кода в $result будет:
stdClass Object
(
    [id] => 2
    [title] => Описание CMS Joomla
)
Данный метод работает аналогично методу loadAssocтолько возвращает не асоциированный массив, а объект stdClass:
stdClass Object
(
    [id] => 1
    [title] => О студии
)
Данный метод работает аналогично методу loadAssocList только возвращает не асоциированные массивы, а объекты stdClass!
Пример:
$result = $db->setQuery( 'SELECT title FROM #__content WHERE id=49' )->loadResult();
Результат работы в переменной $result следующее содержимое:
Работа с сессиями в Joomla (JSession)
Данный метод работает аналогично методу loadAssoc только возвращает не асоциированный массив, а нумерованный массив:
Данный метод работает аналогично методу loadAssocList только возвращает не асоциированные массивы, а нумерованные!

 

Информационные методы:

connected() Метод вернет true если установлено соединение с базой данных
disconnect() Метод для разрыва соединения с базой данных
dropTable($table, $ifExists) Метод для удаления таблицы из базы данных, если переменная $ifExists установлена в true, то выполняется проверка на существование таблицы
getAffectedRows() Количество строк которые были затронуты предыдущим запросом
getCollation() Возвращает кодировку текущей базы данных
getConnection() Информация о соединении с базой данных
getConnectors() Доступные драйверы с которыми работает наша система
getCount() Общее количество запросов выполненных через JDatabaseDriver, до момента вызова этого метода
getDateFormat() Формат даты
getLog() Список запросов которые выполнены через JDatabaseDriver до момента вызова этого метода
getMinimum() Минимальная необходимая версия драйвера базы данных
getPrefix() Префикс таблиц в базе данных
getTableColumns( $table ) Возвращает асоциированный массив ключами которого будет тип поля в таблице
getTableCreate( $table ) Возвращает запрос для создания указанной таблицы
getTableKeys( $table ) Возвращает массив ключей таблицы с их характеристиками
getTableList() Возвращает список таблиц в текущей базе данных
getVersion() Версия базы данных
insertid() Идентификатор последней вставленной записи в последнем выполненном запросе на вставку
isMinimumVersion() проверяет или версия MySQL соответствует минимальным требованиям
isSupported() Проверяет или система поддерживает драйвер базы данных
renameTable($name1, $name2) Смена имени таблицы с $name1 в $name2
select($databaseName) Соединение с другой базой данных