В прошлых статьях мы написали небольшой каркас для экспериментов с компонентом. По своей сути он самодостаточен, вы вольны делать в нем все. что считаете нужным. Но, как и в любом более менее серьезном проекте, вам не обойтись без построении бизнес логики, а она в свою очередь невозможна без использования хранилищ. Хранилищем номер один будут файлы. но они не удобны. Более удобна для хранения данных безусловно база данных. Обычно это база в MySQL сервере. Про работу с ней и поговорим в этой статье.
Работа с БД в joomla поставлена не самым удобным образом. К примеру, чтобы выдернуть несколько строк из таблицы, нужно сделать несколько манипуляций
$db = JFactory::getDBO();
$db->setQuery('select * from #_tablaname');
$rows = $db->loadAssocList();
Вы заметили jml_ в названии таблицы, эту подстроку Joomla автоматически заменит на префикс базы. который прописан в конфигурационном файле. Это очень удобно, и рекомендую делать именно так.
но это еще не самый худший пример. При вставке и обновлении записей, кода будет еще больше.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query
->insert($db->quoteName('jml_tablename'))
->columns('name,value')
->values(implode(',', array("'vasya'","'poppkin'"));
$db->setQuery($query);
$db->query()
$db->insertid();
Страшное дело. Обновление записей происходит по тому же принципу.
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$obj = new stdclass();
$query
->update($db->quoteName('jml_tablename'))
->where('id=4');
$array = array('name'=>'vova');
foreach($array as $key=>$value){
$query->set($db->quoteName($key).'="'.$value.'"');
}
$db->setQuery($query);
$db->query();
И наконец удаление
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query
->delete($db->quoteName('jml_tablename'))
->where(array('id=5','region=6','`pos`=2 and `name`='.$db-.quote('vasya').''));
$db->setQuery($query);
$db->query();
Не сильно все это удобно, но ничего не поделаешь. хотя нет, вру. Поделаешь. Для своих нужд я написал класс, который облегчает выполнение всех этих повседневных операций. Однажды попробовав ее, Вам уже не захочется использовать ничего другого. Это как с компьютерными креслами. Привыкнув к одному компьютерному креслу, тяжело садится на другое.
С ней эти операции значительно упрощаются операции
Выборка нескольких строк
uno::getRows('tablename',array('`name`='.uno::escape('vasya')));
Вставка записи
uno::insert('tablename',array('name'=>'vasya'));
обновление записи
uno::update('tablename',array('name'=>'vasya'),array('name='.uno::_('vasya')))
Гораздо удобнее, вы согласны?
Создание компонента Joomla с нуля
- Создание компонента Joomla с нуля. Часть 1
- Создание компонента Joomla с нуля. Часть 2. PHP файл
- Создание компонента Joomla с нуля. Часть 3. Создаем установочный файл
- Создание компонента Joomla с нуля. Часть 4. Использование БД
- Создание компонента Joomla с нуля. Часть 5. Роутинг
- Создание компонента Joomla с нуля. Часть 6. Использование шаблонов
- Создание компонента Joomla с нуля. Часть 7 CRUD в контроллере


Комментарии
defined( '_JEXEC') or die('Restricted access');
то пишет Class JFactory was not ...