Пожалуйста, будьте осторожны: это пока нестабильная версия без покрытия 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()
- Обновить
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.phprequire_once 'vendor/webarchitect609/bitrix-user-type/src/inc/aliases.php';