webarchitect609 / bitrix-orm-tools
Bitrix orm 表类工具。
2.6.1
2024-09-03 12:26 UTC
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
请注意:这是一个尚未经过单元测试的预发布版本!
用于处理Bitrix D7 ORM的辅助工具。
功能
- 生成存储元素多个属性的字段描述。
安装
-
通过composer安装
composer require webarchitect609/bitrix-orm-tools
-
在init.php文件的最开始添加composer自动加载器的连接
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()
忽略此类错误。
错误:"未找到类 \WebArch\BitrixOrmTools\Field\TimeField"
- 更新
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';