Goldensites | CMS Joomla | Joomla 2.5 | Работа с базой данных. Конструктор запросов к БД Joomla

Работа с базой данных. Конструктор запросов к БД Joomla

Еще начиная с версии 1.6 в Joomla появилась возможность создавать объектно-ориентированные запросы.

 

 

Новый класс JDatabaseQuery, благодаря которому появилась эта возможность, расположен в libraries/joomla/database/databasequery.php

Для того, чтобы получить объект для создания объектно-ориентированных запросов, делаем так

 

//из модели
$query = $this->getDbo()->getQuery(true);
//в других случаях
$db = JFactory::getDbo();
$query = $db->getQuery(true);

Полученный объект имеет следующие методы:

Полученный объект имеет следующие методы:

МетодОписание и примеры
clear

Очистка запроса перед созданием нового

$query->clear();

select

Выборка полей из таблицы/таблиц

Строка или массив имен полей таблицы

$query->select(array("title", "content"));

delete

Удаление данных из таблицы

$query->delete();

insert

Вставка новых данных в указанную таблицу

Строка или массив имен полей таблицы

$query->insert("title");

update Обновление данных в указанной иаблице
from Из какой таблицы выбирать данные
join Позволяет присоеденять записи двух таблиц
innerJoin Оператор внутреннего соединения
outerJoin Присоединение таблицы с необязательным присутствием записи в таблице
leftJoin возвращает строки из левой таблицы(table_name1), даже если их нет в правой таблице (table_name2).
rightJoin возвращает строки из правой таблицы(table_name2), даже если их нет левой таблице (table_name1).
set Метод служит для обновления данных в записи или записях, работает в связке с оператором update
where Метод служит для создания условий в запросе
group Метод для создании групировки результата или нескольких столбцов
order Метод для создании сортировки результато по определенному полю

Комментарии 

 
+2 #1 GS 27.09.2013 08:17
Пример запроса
$db= $this->getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('#__content as a');
$query->where('a.catid = 9');
$query->where('a.state = 1');
$db->setQuery((strin g) $query);

if (!$db->query()) {
JError::raiseEr ror(500, $db->getErrorMsg());
}

$items = $db->loadObjectList( );
Цитировать