webarchitect609 / bitrix-orm-tools
Bitrix orm table class tools.
Installs: 3 199
Dependents: 1
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: ^7.2 || ^8.0
- symfony/finder: ^3.0 || ^4.0 || ^5.0
- webarchitect609/bitrix-cache: ^1.6 || ^2.0
- webarchitect609/bitrix-iblock-property-type: ^2.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpstan/phpstan: ^0.12.25
- phpunit/phpunit: ^8.5
- roave/security-advisories: dev-master
- webarchitect609/bitrix-taxidermist: ^0.1
Conflicts
- webarchitect609/bitrix-user-type: <0.8.0
README
Пожалуйста, будьте осторожны: это пока нестабильная версия без покрытия Unit-тестами!
Вспомогательные инструменты для работы с Битрикс D7 ORM.
Возможности
- Генерация описания полей таблицы хранения немножественных свойств элемента инфоблока.
Установка
-
Установить через composer:
composer require webarchitect609/bitrix-orm-tools
-
Добавить подключение автозагрузчика composer в самое начало файла init.php
require_once $_SERVER['DOCUMENT_ROOT'] . '/../../vendor/autoload.php';
Использование
Чтобы воспользоваться функциональностью генерации описания немножественных свойств элемента инфоблока:
- отнаследоваться от
\WebArch\BitrixOrmTools\Iblock\Property\DynamicSinglePropertiesTable
и объявить методgetIblockId()
; - при объявлении
Bitrix\Main\Entity\ReferenceField
(илиBitrix\Main\ORM\Fields\Relations\Reference
) воспользоваться созданным классом;
use Bitrix\Iblock\ElementTable; use Bitrix\Main\Entity\ReferenceField; use Bitrix\Main\ORM\Query\Join; use WebArch\BitrixOrmTools\Iblock\Property\DynamicSinglePropertiesTable; class NewsSinglePropTable extends DynamicSinglePropertiesTable { public static function getIblockId(): int { return 123; } } ElementTable::query() ->registerRuntimeField( new ReferenceField( 'NEWS_PROP', NewsSinglePropTable::class, Join::on('this.ID', 'ref.IBLOCK_ELEMENT_ID'), ['join_type' => 'INNER'] ) );
Известные особенности
Необходимость описывать конверторы для всех свойств
Если используются пользовательские свойства элемента инфоблока, может возникать ошибка
Unsupported property type `S` with user type `Vendor\Package\NutritionValueProperty`
Можно дописать необходимый конвертор и вернуть его, переопределив статический метод
\WebArch\BitrixOrmTools\Iblock\Property\DynamicSinglePropertiesTable::getConverterList()
и добавив к уже
существующему списку конверторов.
Другой вариант - включить игнорирование таких ошибок при помощи метода
\WebArch\BitrixOrmTools\Iblock\Property\DynamicSinglePropertiesTable::ignoreUnsupportedPropertyType()
Ошибка "Class \WebArch\BitrixOrmTools\Field\TimeField not found"
- Обновить
webarchitect609/bitrix-user-type >= 0.9.0
- Предпочтительнее заменить в клиентском коде
\WebArch\BitrixOrmTools\Field\TimeField
на\WebArch\BitrixUserPropertyType\Field\TimeField
. Временное решение: вinit.php
после подключенияvendor/autoload.php
активировать скрипт установки алиасаvendor/webarchitect609/bitrix-user-type/src/inc/aliases.php
require_once 'vendor/webarchitect609/bitrix-user-type/src/inc/aliases.php';