Этот код автоматически создает таблицу в базе данных если она не существует, добавляет новую запись о товаре и выводит информацию о добавленном товаре.
| Код |
|---|
<?php
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');
use Bitrix\Main\ORM\Fields\IntegerField;
use Bitrix\Main\ORM\Fields\StringField;
use Bitrix\Main\ORM\Fields\DatetimeField;
use Bitrix\Main\ORM\Data\DataManager;
use Bitrix\Main\Type\DateTime;
use Bitrix\Main\Application;
class ExampleTable extends DataManager
{
public static function getTableName()
{
return 'my_example_table';
}
public static function getMap()
{
return [
(new IntegerField('ID'))
->configurePrimary(true)
->configureAutocomplete(true),
(new StringField('PRODUCT_NAME'))
->configureRequired(true),
new IntegerField('PRICE'),
(new DatetimeField('DATE_CREATE'))
->configureDefaultValue(new DateTime())
];
}
}
// Создаем таблицу если не существует
$connection = Application::getConnection();
$tableName = ExampleTable::getTableName();
if (!$connection->isTableExists($tableName)) {
$entity = ExampleTable::getEntity();
$entity->createDbTable();
}
// Создание записи
$result = ExampleTable::add([
'PRODUCT_NAME' => 'Ноутбук Dell XPS',
'PRICE' => 125000
]);
if ($result->isSuccess()) {
$id = $result->getId();
echo "Добавлен товар ID: $id";
// Чтение записи
$item = ExampleTable::getById($id)->fetch();
echo "<pre>"; print_r($item); echo "</pre>";
} else {
print_r($result->getErrorMessages());
} |
Результат выполнения:

Этот код можете использовать как демонстрационный, но он небезопасен по нескольким причинам:
- Создание таблиц в runtime - В продакшене структура БД должна управляться через миграции, а не создаваться автоматически при выполнении кода.
- Отсутствие проверки прав доступа - Код не проверяет права пользователя на создание таблиц в БД.
- Уязвимость к SQL-инъекциям - Хотя ORM обеспечивает защиту, прямое использование данных без валидации может быть опасным.
- Конфликт имен таблиц - Автоматическое создание таблиц может привести к конфликтам с существующей структурой БД.
- Отсутствие обработки ошибок - Нет полноценной обработки возможных ошибок при создании таблицы.
В продакшен-среде такое создание таблиц "на лету" недопустимо и должно выполняться только через системы миграций БД.