Подключение к нескольким базам данных

Материал из Umicms
Перейти к:навигация, поиск

Если при выполнении вашего кастомного php-кода необходимо выполнить подключение к другой базе данных, для выборки необходимых данных, то это необходимо сделать с помощью класса ConnectionPool, который расположен в файле \classes\system\subsystems\database\ConnectionPool.php

Далее будет приведен пример кода, который осуществляет подключение к основной и второй базам данных, происходит выборка из второй базы данных, после чего на основании полученных данных создается страница типа "Новость":

$pool = ConnectionPool::getInstance();
//основная база данных
$pool->addConnection("core", "localhost", "umi", "umi", "umi");
//вторая база данных
$pool->addConnection("comfort", "localhost", "umi", "umi", "comfort");
$pool->init();

$conn = $pool->getConnection('comfort');
$sql = "SELECT 	alt_name  FROM `cms3_hierarchy` WHERE `id` = 72";
//выполнение запроса к второй базе данных
$result = $conn->query($sql, true);
list($name) = mysql_fetch_row($result);


//Создание новости с помощью API в основной базе
 $hierarchyTypes = umiHierarchyTypesCollection::getInstance();
 $hierarchyType = $hierarchyTypes->getTypeByName("news", "item");
 $hierarchyTypeId = $hierarchyType->getId();
 
 $hierarchy = umiHierarchy::getInstance();
 

 //add new element
 $newElementId = $hierarchy->addElement(0, $hierarchyTypeId, $name, 'umitest');
 if($newElementId === false) {
  echo "Не удалось создать новую страницу";
 }
 
 //Установим права на страницу в состояние "по умолчанию"
 $permissions = permissionsCollection::getInstance();
 $permissions->setDefaultPermissions($newElementId);
 
 //Получим экземпляр страницы
 $newElement = $hierarchy->getElement($newElementId);
 
 if($newElement instanceof umiHierarchyElement) {
  $newElement->setValue("h1", 'umitest');
  $newElement->setValue("publish_time", time());
  $newElement->setIsActive(true);
  $newElement->commit();
  
  echo "Успешно создана страница с адресом: \"", $hierarchy->getPathById($newElementId), "\"";
 } else {
  echo "Не удалось получить экземпляр страницы #{$newElementId}.";
 }