kosmosafive / bitrix-db
Kosmos: Bitrix Database
Requires
- php: >=8.4
- ramsey/uuid: ^4.9
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.82
This package is auto-updated.
Last update: 2025-07-21 09:46:20 UTC
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' => '\\Kosmos\\Bitrix\\DB\\MysqliConnection', // ...
Использование
В качества класса DataManager используется Kosmos\Bitrix\DB\ORM\Data\DataManager
.
Индексы
В классе, описывающем таблицу (наследник Kosmos\Bitrix\DB\ORM\Data\DataManager
),
необходимо реализовать интерфейс Kosmos\Bitrix\DB\ORM\Index\IndexInterface
.
public static function getIndexConfigurationCollection(): ConfigurationCollection { return new ConfigurationCollection(static::class) ->add(['ENTITY_TYPE']) ->add(['ENTITY_TYPE', 'SECTION_ID']); }
Порядок полей в индексе важен.
Создать индекс:
$entity = SampleTable::getEntity(); $entity->createAdditionalIndexes();
Связи
Связи формируются после создания таблиц. Удаляются перед удалением таблиц.
Связи вычисляются автоматически относительно полей типа \Bitrix\Main\ORM\Fields\Relations\Reference
.
Для создания связей выполнить:
$entity = SampleTable::getEntity(); $entity->createForeignKeys();
Для удаления связей выполнить:
$entity = SampleTable::getEntity(); $entity->dropForeignKeys();
Поля
Для маппинга кастомных полей в классе, описывающем таблицу (наследник Kosmos\Bitrix\DB\ORM\Data\DataManager
),
необходимо модифицировать метод getMap()
.
public static function getMap(): array { $map = [...]; static::addTableMapping($map); return $map; }
Boolean
Kosmos\Bitrix\DB\ORM\Fields\BooleanField
Поле, хранящее булево значение. Без возможности указания замещающего значения для true \ false.
Uuid
Kosmos\Bitrix\DB\ORM\Fields\UuidField
Поле, хранящее uuid. Можно использовать в качестве идентификатора.
Перед фильтрацией по значению поля необходимо подготовить данные:
use Ramsey\Uuid\Uuid; $uuid = Uuid::fromString($value)->getBytes(); SampleTable::query() ->where('ID', $uuid);
Datetime
Kosmos\Bitrix\DB\ORM\Fields\DatetimeField
Поле, хранящее дату и время. Может хранить миллисекунды (size = 6).