Добавить в цитаты Настройки чтения

Страница 7 из 38

array loadAssoc()

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

$db =& JFactory::getDbo(); $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadAssoc());

Результат запроса:

Array([id]=>1 [asset_id]=>0 [parent_id]=>0 [lft]=>0 [rgt]=>11 [level]=>0 [path]=> [extension]= >system [title]=>ROOT [alias]=>root [note]=> [description]=> [published]=>1 [checked_out]=>0 [checked_out_time]=>0000-00-00 00:00:00 [access]= >1 [params]=>{} [metadesc]=> [metakey]=> [metadata]=> [created_user_id]=>0 [created_time]=>2009-10-18 16:07:09 [modified_user_id]= >0 [modified_time]=>0000-00-00 00:00:00 [hits]=>0 [language]=>*)

object loadObject()

Метод загружает первую строку результирующей выборки в виде объекта класса stdClass, причем его полями становятся названия полей таблицы. Если запрос возвращает больше одной строки, то метод вернет первую из них.

$db =& JFactory::getDbo(); $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadObject());

Результат запроса:

stdClass Object([id]=>1 [asset_id]=>0 [parent_id]=>0 [lft]=>0 [rgt]=>11 [level]= >0 [path]=> [extension]=>system [title]=>ROOT [alias]=>root [note]=> [description]=> [published]=>1 [checked_out]=>0 [checked_out_time]=>0000-00-00 00:00:00 [access]= >1 [params]=>{} [metadesc]=> [metakey]=> [metadata]=> [created_user_id]=>0 [created_time]=>2009-10-18 16:07:09 [modified_user_id]=>0 [modified_time]= >0000-00-00 00:00:00 [hits]=>0 [language]=>*)

array loadResultArray(int numinarray=0)

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

$db =& JFactory::getDbo(); $query = 'SELECT '.$db->nameQuote('extension'). ' FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadResultArray());

Результатом будет следующий список:

Array([0]=>com_ba

Данный метод позволяет перебирать в цикле столбцы таблицы:

$db =& JFactory::getDbo(); $query = 'SELECT '.$db->nameQuote('path').','.$db->nameQuote('extension').','.$db->nameQuote('language'). ' FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); for ($i = 0; $i <= 2; $i++) { $column = $db->loadResultArray($i); print_r($column); echo "<br>"; }

В результате на экран будет выведено:

Array([0]=> [1]=>uncategorised [2]=>uncategorised [3]= >uncategorised [4]=>uncategorised [5]=>uncategorised) Array([0]=>system [1]=>com_content [2]=>com_ba

array loadRowList(int key)

Метод загружает список массивов или ассоциативный массив массивов. Если задан параметр key, то ключами возвращаемого массива будут значения поля, идущего в таблице под номером key, начиная с нуля.

$db =& JFactory::getDbo(); $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadRowList(7));

В данном примере из таблицы #__categories ядра Joomla извлекаются все записи, причем ключами полученного массива будут значения столбца №7, т.е. поля extension:

Array ( [system]=>Array([0]=>1 … [25]=>*) [com_content]=>Array([0]=>2 … [25]=>*) [com_ba



Если не указать параметр key, то вместо ассоциативного массива мы получим список:

Array ( [0]=>Array([0]=>1 … [25]=>*) [1]=>Array([0]=>2 … [25]=>*) [2]=>Array([0]=>3 … [25]=>*) [3]=>Array([0]=>4 … [25]=>*) [4]=>Array([0]=>5 … [25]=>*) [5]=>Array([0]=>6 … [25]=>*) )

array loadAssocList(string key='', string column='')

Метод загружает список ассоциативных массивов или ассоциативный массив ассоциативных массивов. Если задан параметр key, то ключами полученного массива будут значения столбца под названием key. Если задан параметр column, то в полученном массиве будет всего один столбец column.

$db =& JFactory::getDbo(); $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadAssocList('extension'));

Результат запроса:

Array ( [system]=>Array([id]=>1 [asset_id]=>0 ... [language]=>*) [com_content]=>Array([id]=>2 [asset_id]=>27 ... [language]=>*) [com_ba

Как видим, ключи полученного массива - это значения поля extension, заданного параметром в метод loadAssocList().

Зададим значение второго параметра, чтобы получить только значение id для каждой строки таблицы:

$db =& JFactory::getDbo(); $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadAssocList('extension','id'));

Результат запроса:

Array([system]=>1 [com_content]=>2 [com_ba

array loadObjectList(string key='')

Метод загружает список объектов stdClass или ассоциативный массив объектов stdClass. Если задан параметр key, то ключами полученного массива будут значения поля под названием key:

$db =& JFactory::getDbo(); $query = 'SELECT * FROM '.$db->nameQuote('#__categories'); $db->setQuery($query); print_r($db->loadObjectList('extension'));

Результат запроса:

Array ( [system]=>stdClass Object([id]=>1 [asset_id]=>0 ... [language]=>*) [com_content]=>stdClass Object([id]=>2 [asset_id]=>27 ... [language]=>*) [com_ba

Таблицы базы данных (класс JTable)

Класс JTable реализует паттерн Active Record и используется для управления таблицами базы данных.

Для каждой таблицы, которую вы будете создавать для своего компонента, необходимо создать класс, производный от JTable. Каждый такой класс помещается в отдельном файле в папке /administrator/components/com_<имя компонента>/tables. Имя класса строится по схеме Table<название таблицы>, а файла - <название таблицы>.php.

Для каждого поля таблицы необходимо создать одноименное поле класса.

Кроме того, создается конструктор класса, принимающий ссылку на объект JDatabase. Конструктор вызывает родительский конструктор, передавая ему название таблицы, название поля, являющегося первичным ключом таблицы, и объект JDatabase.