основные функции для работы с Joomla база данных

Joomla база данных - основные функции для работы

Опубликовано: 28.02.2015 13:54
Просмотров: 2704

Сегодня расскажу о том, как в CMS Joomla работать с базой данных. Всё в подробностях смотрим в этой статье!

База данных в Joomla - это просто

Приветствую вас, наши дорогие читатели. Сегодня я столкнулся с тем, что CMS этого блога (а мы решили использовать Joomla 3.0, если кто-то ещё этого не знал) практически не имеет туториалов по работе с базой данных. Мне, как программисту, захотелось более глубоко копнуть в эту сторону, и я решил написать небольшую статью про работу с базой данных в Joomla.

Общая информация

Когда вы впервые разворачиваете на сайте Joomla, то у вас автоматически создаётся класс database (исходный код находится в /includes/database.php), который полностью взаимодействует с БД сайта - выборки, работа с данными и прочее. Этот класс очень тесно связан с MySQL, он очень просто в использовании, в чём вы сможете удостоверить дальше.

Таблицы и префикс в Joomla

В данной CMS присутствует функционал, который даёт доступ к таблицам БД, в соответствии с префиксами таблиц. Т.е. если ваш хостер даёт возможность создания только одной базы данных, а вы вдруг захотели сделать 2 базы, то с помощью префиксов вы с лёгкостью сможете осуществить данную махинацию. Сам префикс создаётся ещё при установке Joomla, вид у него примерно такой pref_НазваниеТаблички. Записывается он глобально в файл конфигурации configuration.php. 

При работы с БД вы можете подставлять каждый раз к названию выбираемой таблицы префикс, но это ужасно неудобно. Для упрощения жизни я бы рекомендовал использовать макроподстановку - встроенный механизм Joomla.

Функции и методы класса database

  • setQuery - самый важный запрос. Требуется для записи запроса во внутреннюю переменную сайта и замены префикса на значение "по умолчанию".
  • query - проводим запрос, но не возвращаем ничего обратно. Требуется для удаления, изменения, вставки каких-либо данных.
  • loadObjectList - выбирает массив объектов из запроса setQuery.
  • loadResult - загружает одно поле в случае, если возвратится один объект (пример: true или false).
  • loadResultArray - загружаем массив из результатов. используется практически постоянно.

Привожу примеры, которые используются в нашем блоге:

1) Загружаем всех пользователей с сайта

1
2
3
4
5
6
$database->setQuery("SELECT * FROM #__users");
$result = $database->loadObjectList();
//Выводим имена 
foreach($result as $profile) {
    echo 'Пользователь '.$profile->name;
}

Код простецкий. Мы получаем какую-то выборку и в цикле выводим названия всех пользователей, полученных в запросе.

2) Удаляем данные из таблицы

1
2
$database->setQuery("DELETE FROM #__table WHERE id = 0");
$database->query();

Удаляем из таблицы table запись с id'шником, равным нулю. Всё очень просто.

3) Вставка данных в таблицу

1
2
$database->setQuery("INSERT INTO #__mytable (name,value) VALUES ('лучший','самый приятный')");
$database->query();

Здесь аналогично всё просто. Мы вставляем одну запись в таблицу mytable. Люди, знакомые с SQL поймут эти запросы без проблем.

В Joomla работают все запросы из MySQL. Для этого советую поискать документацию в интернете, MySQL хорошо документирована и имеет огромное русскоязычное сообщество.

Отладка запросов

Бывает так, что запрос возвращает NULL. Иногда это связано с ошибкой синтаксиса запроса, или какими-либо другими проблемами (подключение к базе, отсутствие таблицы и т.д.). Для "дебага запроса" существует отличная функция echo $database->stderr();

Выводы

Я описал совершенно поверхностно работу с базой данных, но даже этой информации должно хватить для программирования на Joomla.

Всем приятного дня и до встречи!

Оставьте свой комментарий

Оставить комментарий от имени гостя

0 / 2000 Ограничение символов
Ваш текст должен быть в пределах 10-2000 символов
Ваш комментарий будет отправлен на модерацию