kosmosafive/bitrix-db
最新稳定版本:2.1.1
Composer 安装命令:
composer require kosmosafive/bitrix-db
包简介
Bitrix Database
README 文档
README
Расширение соединения с базой данных Bitrix (MysqliConnection).
Конфигурация
Конфигурацию указывать в файле /bitrix/.settings.php или /bitrix/.settings_extra.php.
$vendorAutoload = dirname(__DIR__) . '/local/vendor/autoload.php'; if (file_exists($vendorAutoload)) { require_once $vendorAutoload; } // ... 'connections' => [ 'value' => [ 'default' => [ 'className' => '\\Kosmosafive\\Bitrix\\DB\\MysqliConnection', // ...
Использование
В качества класса DataManager используется Kosmosafive\Bitrix\DB\ORM\Data\DataManager.
Генерация запросов для пакетных операций с данными
Перед генерацией запросов может потребоваться предварительно загрузить карту таблицы.
SampleTable::getMap();
Индексы
В классе, описывающем таблицу (наследник Kosmosafive\Bitrix\DB\ORM\Data\DataManager),
необходимо реализовать интерфейс Kosmosafive\Bitrix\DB\ORM\Index\IndexInterface.
public static function getIndexConfigurationCollection(): ConfigurationCollection { return new ConfigurationCollection(static::class) ->add(['ENTITY_TYPE']) ->add(['ENTITY_TYPE', 'SECTION_ID']); }
Порядок полей в индексе важен.
Создать индекс (вызывается в createDbTable()):
$entity = SampleTable::getEntity(); $entity->createAdditionalIndexes();
Связи
Связи формируются после создания таблиц. Удаляются перед удалением таблиц.
Связи вычисляются автоматически относительно полей типа \Bitrix\Main\ORM\Fields\Relations\Reference.
Для создания связей выполнить:
$entity = SampleTable::getEntity(); $entity->createForeignKeys();
Для удаления связей выполнить:
$entity = SampleTable::getEntity(); $entity->dropForeignKeys();
Ограничения
В классе, описывающем таблицу (наследник Kosmosafive\Bitrix\DB\ORM\Data\DataManager),
необходимо реализовать интерфейс Kosmosafive\Bitrix\DB\ORM\Constraint\ConstraintableInterface.
public static function getConstraintCollection(): ConstraintCollection { return new ConstraintCollection() ->add(new Unique('user_entity', 'USER_ID', 'ENTITY_ID')); }
Создать ограничения (вызывается в createDbTable()):
$entity = SampleTable::getEntity(); $entity->createConstraints();
Check
Kosmosafive\Bitrix\DB\ORM\Constraint\Check
Проверка переданного условия.
new Chech( 'price', 'PRICE > 0' );
Unique
Kosmosafive\Bitrix\DB\ORM\Constraint\Unique
Проверка уникальности одного или нескольких полей.
new Unique( 'user_entity', 'USER_ID', 'ENTITY_ID' );
Поля
Для маппинга кастомных полей в классе, описывающем таблицу (наследник Kosmosafive\Bitrix\DB\ORM\Data\DataManager),
необходимо модифицировать метод getMap().
public static function getMap(): array { $map = [...]; static::addTableMapping($map); return $map; }
Boolean
Kosmosafive\Bitrix\DB\ORM\Fields\BooleanField
Поле, хранящее булево значение. Без возможности указания замещающего значения для true \ false.
Char
Kosmosafive\Bitrix\DB\ORM\Fields\CharField
Строка с фиксированной длиной.
Datetime
Kosmosafive\Bitrix\DB\ORM\Fields\DatetimeField
Поле, хранящее дату и время. Может хранить миллисекунды (size = 6).
Unsigned Integer
Kosmosafive\Bitrix\DB\ORM\Fields\UnsignedIntegerField
Беззнаковое целое.
Uuid
Kosmosafive\Bitrix\DB\ORM\Fields\UuidField
Поле, хранящее uuid. Можно использовать в качестве идентификатора.
Перед фильтрацией по значению поля необходимо подготовить данные:
use Ramsey\Uuid\Uuid; $uuid = Uuid::fromString($value)->getBytes(); SampleTable::query() ->where('ID', $uuid);
Миграция
统计信息
- 总下载量: 62
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-21