Битрикс. Работа с базой данных
30.10.2018
Теги: CMS • БазаДанных • Битрикс • Запрос • НовоеЯдро
Битрикс позволяет работать с базой данных на низком уровне, но это необходимо в небольшом числе случаев. Предпочтительно работать через ORM, которая позволяет программировать только на уровне бизнес-логики. Итак, сначала надо получить соединение с базой данных:
// Получить соединение с основной базой данных $connection = Bitrix\Main\Application::getConnection(); // Подключение к дополнительной базе данных $connection = Bitrix\Main\Application::getConnection('additional');
/* * Файл bitrix/.settings.php */ return array ( /*...*/ 'connections' => array ( 'value' => array ( 'default' => array ( // основная база данных 'className' => '\\Bitrix\\Main\\DB\\MysqliConnection', 'host' => 'localhost', 'database' => 'bitrix3', // имя базы данных 'login' => 'bitrix3', // имя пользователя БД 'password' => '.....', // пароль пользователя БД 'options' => 2.0, ), 'additional' => array ( // дополнительная база данных 'className' => '\\Bitrix\\Main\\DB\\MysqliConnection', 'host' => 'localhost', 'database' => 'bitrix4', // имя базы данных 'login' => 'bitrix4', // имя пользователя БД 'password' => '.....', // пароль пользователя БД 'options' => 2.0, ), ), 'readonly' => true, ), /*..*/ );
Запрос к базе данных с получением результата:
$connection = Bitrix\Main\Application::getConnection(); // Подготовка строки для использования в sql-запросе $login = 'admin'; $sqlHelper = $connection->getSqlHelper(); $data = $sqlHelper->forSql($login, 50); $query = "SELECT `NAME`, `LAST_NAME`, `EMAIL` FROM `b_user` WHERE `LOGIN` = '".$data."'"; $result = $connection->query($query); if ($user = $result->fetch()) { debug($user); }
Array ( [NAME] => Сергей [LAST_NAME] => Иванов [EMAIL] => ivanov.s@host14.ru )
Скалярный запрос (возвращает не набор данных, а конкретное значение):
$query = "SELECT COUNT(`ID`) FROM `b_user` WHERE 1"; $count = $connection->queryScalar($query);
Запрос без получения результата:
$connection->queryExecute("INSERT INTO `some_table` (`NAME`, `SORT`) VALUES ('Название', 100)");
Удалить таблицу:
$connection->dropTable($tableName);
Очистить таблицу:
$connection->truncateTable($tableName);
Проверить существование таблицы:
$connection->isTableExists($tableName);
Переименовать таблицу:
$connection->renameTable($oldName, $newName);
Получить поля таблицы:
$connection->getTableFields($tableName);
Удалить колонку в таблице:
$connection->dropColumn($tableName, $columnName);
Создать первичный ключ:
$connection->createPrimaryIndex($tableName, $columnNames);
Создать индекс:
$connection->createIndex($tableName, $indexName, $columnNames);
Подробнее можно посмотреть в документации Битрикс.
Поиск: CMS • База данных • Битрикс • Запрос • Новое ядро