kosmosafive/bitrix-db

Kosmos: Bitrix Database

1.0.0 2025-07-21 09:42 UTC

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).