Комментарии

Формирование запросов на выборку средствами класса JDatabaseQuery в CMS Joomla
( 0 Голосов )

Если знать, каким образом на языке SQL составляются запросы на выборку по команде SELECT, то сделать это средствами класса JDatabaseQuery не составит большого труда. Ниже перечислены методы из класса JDatabaseQuery для каждого оператора, используемого в запросе по команде SELECT.

Как пояснялось ранее, порядок следования различных операторов в запросах SQL жестко установлен. Но в классе JDatabaseQuery объект запроса может быть построен
в любом порядке. Когда же запрос передается базе данных, его операторы располагаются в нужном порядке с помощью метода toString () из класса JDatabaseQuery. Так же просто в запрос можно ввести и дополнительные столбцы. Например, запрос может быть начат со следующего списка столбцов:

$query->select(* а.id, а.title');

А в дальнейшем, вероятнее всего, после ввода в запрос таблицы категорий его можно дополнить столбцами, как показано ниже.

$query->select('c.id AS  catid, с.title AS  cat_title');

Это дает возможность составить запрос таким образом, чтобы его легко было понять и чтобы он органично вписывался в последовательность выполнения кода программы. То же самое справедливо и для методов соединения. В частности, для внутреннего и левого соединения в рассматриваемом здесь классе имеются отдельные методы, которым в качестве аргумента передается условие, определяемое оператором ON. Соединения таблиц осуществляются по очереди, а по желанию в данном месте кода можно даже ввести столбцы из присоединенной таблицы.

В методе where () можно указать в качестве второго аргумента связывающий логический оператор AND или OR, причем первый из них предполагается по умолчанию. Если же требуется составить сложные выражения WHERE, например, с условием OR, вложенным в условие AND, это делается в круглых скобках, как и в самом операторе WHERE языка SQL. Например, для воспроизведения следующего оператора WHERE языка SQL:

WHERE
(a.created_by_alias = 'Parks Webmaster' OR с title = 'Plugins') AND
(a.title LIKE 'Ed%' OR a.title LIKE 'Au%')

можно написать такой код:

$query->where('(a.created_by_alias = 'Parks Webmaster'
OR с title = 'Plugins')'); $query->where('(a.title LIKE 'Ed%' OR a.title LIKE 'Au%')');

В этом примере кода вложенные условия OR передаются методу where () в качестве первого аргумента, тогда как логический оператор AND предполагается по умолчанию. Обратите внимание на то, что для соблюдения правильного порядка вычисления выражений служат круглые скобки. В методах select () и order () имя каждого столбца или выражение отделяется запятой. Так, в методе order () порядок сортировки указывается с помощью выражений ASC или DESC, как и в коде запроса SQL.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости