Bitrix можно ли использовать API битрикса для второго соединения к БД?

Есть второе соединение к БД указано в settings.php

вызываю подключение
$connection = Bitrix\Main\Application::getConnection('testdb');
	$sqlHelper = $connection->getSqlHelper();


во второй БД такой же Битрикс, можно ли к сторонней БД выполнить CIBlockElement::GetList и как это сделать?

или только SQL напрямую?
$sql = "SELECT ID, XML_ID FROM b_iblock_element WHERE IBLOCK_ID='17' AND ID = '12135'";
  • Вопрос задан
  • 672 просмотра
Пригласить эксперта
Ответы на вопрос 2
pro6ka
@pro6ka
web developer
Да, можете. Абсолютно ничто не мешает.
$obElements = CIBlockElement::GetList(
    // ...
);
while ($element = $obElements->Fetch()) {
    // code here
}
Ответ написан
serginhold
@serginhold
можно ли к сторонней БД выполнить CIBlockElement::GetList и как это сделать?

вряд ли за год что-то в этой поделке изменилось, в закладках у меня есть подмена global $DB, по другому там вроде не подлезть, но если в коде подменил, потом при работе с default базой надо будет подменить обратно
const CONN_DEFAULT = '';

private static $poolDB = [];

final public static function changeGlobalDB(string $name = '')
{
        global $DB;

        if (empty(self::$poolDB)) {
            self::$poolDB[self::CONN_DEFAULT] = $DB;
        }

        if (!isset(self::$poolDB[$name])) {
            $conn = Application::getConnection($name)->getConfiguration();
            self::$poolDB[$name] = new \CDatabase();
            self::$poolDB[$name]->Connect($conn['host'], $conn['database'], $conn['login'], $conn['password'], $name);
        }

        return $DB = self::$poolDB[$name];
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы