J3.x

Использование Базы Данных

From Joomla! Documentation

< J3.x:Creating a simple module
This page is a translated version of the page J3.x:Creating a simple module/Using the Database and the translation is 96% complete.

Other languages:
English • ‎español • ‎français • ‎Bahasa Indonesia • ‎Nederlands • ‎português do Brasil • ‎русский
Joomla! 
3.x
Урок
Создание простого модуля

Данная серия материалов написана о том, как разработать какой-либо модуль для Joomla! в версии Joomla 3.x. Вы можете пройтись по материалам этой серии с помощью выпадающего навигационного меню.

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



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

Создание таблицы при установке

Чтобы создать XML-таблицу при установке мы собираемся добавить следующие строки в mod_helloworld.xml:

<install>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
         <file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file>
     </sql>
</install>

<uninstall>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file>
         <file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file>
     </sql>
</uninstall>

<update> 
    <schemas>
        <schemapath type="mysql">sql/mysql/updates</schemapath> 
	<schemapath type="sqlazure">sql/sqlazure/updates</schemapath> 
    </schemas> 
</update>

В этом коде есть 3 секции:

  • Тег "install" добавляет таблицу базы данных.
  • Тег "uninstall" удаляет таблицу базы данных, если модуль удаляется. Обратите внимание, что не все модули захотят использовать эту функцию (и это не обязательно).
  • Тег "update" будет обновлять базы данных, если база данных должна быть изменена при обновлении модуля.

Далее следует указать тег "folder" в разделе "files", чтобы гарантировать, что SQL-файлы скопированы с установочного zip-архива:

<folder>sql</folder>

Обратите внимание, что у нас есть схемы и для MySQL и для Microsoft SQL - опять же вы можете выбрать, будете ли вы адаптировать свой модуль для одной из этих систем или же для обеих .

В этом примере мы просто покажем пример файлов для базы данных MySQL. Создание файлов для Microsoft SQL Server будет оставлено в качестве упражнения для самостоятельной тренировки читателя.

В нашем файле install.mysql.utf8.sql мы создадим таблицу и поместим некоторые приветствия в нее.

CREATE TABLE IF NOT EXISTS `#__helloworld` (
	`id` int(10) NOT NULL AUTO_INCREMENT,
	`hello` text NOT NULL,
	`lang` varchar(25) NOT NULL,

  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hello World', 'en-GB');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr-FR');

В файле uninstall мы просто удалим таблицу.

DROP TABLE IF EXISTS `#__helloworld`

Finally we'll just leave a placeholder in the updates file. There is an SQL file for each component version. Each file name must match the version string in the manifest file for that version. Joomla uses this string to determine which SQL files(s) to execute, and in what order they will be executed.

Важное Замечание: эти файлы также используются, чтобы установить номер версии в таблице #__schemas. Этот номер версии должен присутствовать в текущей версии компонента для того, чтобы новые файлы SQL были запущены во время обновления. Например, если у вас версия 1.0 и вы обновляетесь до версии 1.1, файл 1.1.sql не будет выполнен, если файла 1.0.sql нет в релизе 1.0. По этой причине, это хорошая практика - иметь файл обновления SQL для каждой версии, даже если нет изменений SQL в этой версии.

# Placeholder file for database changes for version 1.0.0

Создание запроса в файле хелпера

При установке нашего модуля мы должны заметить, что теперь у нас есть таблица helloworld в нашей базе данных с нашими приветствиями в ней. Теперь мы должны извлечь это из базы данных для отображения пользователю. Сейчас мы будем вносить изменения в функцию "getHello", которую мы разместили в файле хелпера в последней части.

Пока что мы будем не будем рассматривать использование полей формы для выбора приветствия и просто получим английскую версию.

// Obtain a database connection
$db = JFactory::getDbo();
// Retrieve the shout
$query = $db->getQuery(true)
            ->select($db->quoteName('hello'))
            ->from($db->quoteName('#__helloworld'))
            ->where('lang = ' . $db->Quote('en-GB'));
// Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
// Return the Hello
return $result;

Заключение

Используя модули с подключениями к базе данных для Joomla! это довольно простой и понятный процесс. С помощью методов, описанных в этом руководстве, очень многие модули могут быть разработаны без особых хлопот, с обновлениями простыми для управления.