Чтение онлайн

на главную - закладки

Жанры

Разрботка расширений для CMS Joomla
Шрифт:

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_banners]=>Array([0]=>3 … [25]=>*) [com_contact]=>Array([0]=>4 … [25]=>*) [com_newsfeeds]=>Array([0]=>5 … [25]=>*) [com_weblinks]=>Array([0]=>6 … [25]=>*) )

Если не указать параметр 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_banners]=>Array([id]=>3 [asset_id]=>28 ... [language]=>*) [com_contact]=>Array([id]=>4 [asset_id]=>29 ... [language]=>*) [com_newsfeeds]=>Array([id]=>5 [asset_id]=>30 ... [language]=>*) [com_weblinks]=>Array([id]=>6 [asset_id]=>31 ... [language]=>*) )

Как видим, ключи полученного массива - это значения поля 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_banners]=>3 [com_contact]=>4 [com_newsfeeds]=>5 [com_weblinks]=>6)

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_banners]=>stdClass Object([id]=>3 [asset_id]=>28 ... [language]=>*) [com_contact]=>stdClass Object([id]=>4 [asset_id]=>29 ... [language]=>*) [com_newsfeeds]=>stdClass Object([id]=>5 [asset_id]=>30 ... [language]=>*) [com_weblinks]=>stdClass Object([id]=>6 [asset_id]=>31 .. [language]=>*) )

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

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

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

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

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

Например, пусть имеется таблица #__mycomponent_mytable из двух столбцов: id и name. Тогда производный от JTable класс должен выглядеть так:

class TableMytable extends JTable { var $id = null; var $name = null; function __construct(&$db) { parent::__construct('#__mycomponent_mytable', 'id', $db); } }

Чтобы использовать в коде вашего компонента файл, содержащий этот класс, нужно добавить папку tables в список директорий, в которых JTable может искать классы таблиц:

JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_mycomponent'.DS.'tables');

Теперь при создании экземпляра класса TableMytable Joomla будет искать файл mytable.php.

Для получения экземпляра данного класса используется метод getInstance:

object getInstance(string $type, string $prefix= 'JTable', array $config=array)

где

$type - вторая часть имени класса; $prefix - первая часть имени класса; $config - массив, содержащий настройки конфигурации.

В их числе может находиться объект-представитель базы данных, и тогда он будет использован вместо глобального объекта JDatabase. Например:

$row =& JTable::getInstance('mytable', 'Table');

Производный от JTable класс наследует в числе прочих методы bind, store, load и delete, позволяющие управлять записями таблицы без единой строки SQL-кода.

Поделиться:
Популярные книги

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Ненастоящий герой. Том 1

N&K@
1. Ненастоящий герой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Ненастоящий герой. Том 1

Мастер Разума IV

Кронос Александр
4. Мастер Разума
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер Разума IV

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Огненный князь 3

Машуков Тимур
3. Багряный восход
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Огненный князь 3

Попаданка

Ахминеева Нина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Магия чистых душ

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.40
рейтинг книги
Магия чистых душ

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Магнатъ

Кулаков Алексей Иванович
4. Александр Агренев
Приключения:
исторические приключения
8.83
рейтинг книги
Магнатъ

Прогрессор поневоле

Распопов Дмитрий Викторович
2. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прогрессор поневоле

Системный Нуб 4

Тактарин Ринат
4. Ловец душ
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Системный Нуб 4

Мимик нового Мира 4

Северный Лис
3. Мимик!
Фантастика:
юмористическая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Мимик нового Мира 4