Блог
| Категории: |
|
Программирование → Работа с базами данных в модели компонента Joomla 1.5
09.06.2010
Поскольку Joomla 1.5 — полноценный фреймворк, в ней предусмотрен ряд функций, призванных облегчить работу пользователя с базой данных. При создании MVC компонента для Joomla 1.5 в модели уже есть встроенные функции для работы с базой данных, поэтому не нужно, как раньше, объявлять объект базы данных: $db = & JFactory::getDBO(); Рассмотрим несколько примеров по работе с базой данных.
В эту функцию передаются три параметра — запрос, с какой строки начать выборку и сколько строк выбирать. То есть, вызов функции: $this->_getList($query, 10, 20); будет аналогом в SQL - LIMIT 10, 20 (собственно, такой код и подставляется к запросу). Данные будут получены в виде массива объектов, где полями объекта будут названия ячеек таблицы, а значением — значение ячейки текущей строки. Например, чтобы вывести в цикле все имена, можно написать так:
функцией _getList() можно делать выборку по составленному вами запросу $query. Для того, чтобы в модели сделать запрос, например, на удаление, нужно использовать следующий способ:
В Joomla 1.5 существует еще один способ работы с базой данных — это создание объектной модели таблицы. Работает этот способ только с единственной записью из базы данных, и он очень удобен для редактирования, удаления, отображения и обновления одной записи (например, отображения конкретной записи блога). Для того, чтобы создать такую модель таблицы, нужно в backend (административной) части сайта в вашем компоненте добавить папку tables, и в ней создать файл следующего содержания:
Поля такого класса должны точно совпадать с названиями полей в таблице базы данных. Итак, как же работать с такой таблицей в модели:
Теперь рассмотрим все функции. Функция load() — загружает в наш класс строку по $id, и теперь, обращаясь к полю $table->name, мы можем получить то, что записано в поле строки с выбранным $id. Мы можем изменить эту строку и сохранить в базе данных. Для сохранения данных существует функция store() — эта функция булевого типа, она возвращает true, если зарос выполнен успешно. Функция check() — это пользовательская функция, в ней мы можем создать условия для проверки данных. Функция delete() выполняет удаление строки по заданному идентификатору. Функция bind() выполняет установку данных по полям таблицы. То есть, если у нас пришла форма с id и name переменными, то функция bind() фактически выполнит:
Естественно, если полей много, ею удобно пользоваться. Важно знать, что если вам нужно запрограммировать логику установки какого-то определенного поля, то эту логику нужно писать после функции bind(). Например, вы передаете текстовое поле в админке, и при передаче есть HTML теги. Эти теги удалятся функцией bind, поэтому необходимо принять строку специальным способом, и занести в поле таблицы:
|
Теги: |