arrilot / bitrix-hlblock-fields-fixer
此包已弃用且不再维护。未建议替代包。
0.1.1
2018-04-23 21:20 UTC
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2023-01-29 02:51:29 UTC
README
此包不再活跃支持
原因 - 我们不再使用Bitrix进行我们的项目。如果您对这个项目感兴趣并希望支持它 - 分支它并在本存储库中创建一个问题,以便我们将链接放在这里。
修改由highloadblock模块创建的字段
介绍
众所周知,highloadblock模块将元素存储在任意表中,其中每个highload-块的字段代表该表中的一个列。然而,由于历史原因,Bitrix在选择字段类型方面非常奇怪,例如字符串属性存储在类型为text的列中。本包允许重定义任何属性的字段类型,并执行一系列默认的有用转换。
安装
1)composer require arrilot/bitrix-hlblock-fields-fixer
- 添加到init.php
require $_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php"; Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register();
使用
默认情况下,包执行以下转换
// тип поля => тип столбца в mysql // 'string' => 'varchar(255)', // 'string_formatted' => 'varchar(255)', // 'text' => 'text', // 'boolean' => 'tinyint(1)',
字符串 - 字符串 string_formatted - 模板 text - 字符串/模板,如果创建时在“字段输入行数”字段中指定了大于1的值。
可以添加额外的或通过配置数组重写现有的。
Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register(['text' => 'longtext']);
此行仅涉及text字段的转换,所有其他默认转换将继续工作。要关闭某种转换,可以将其设置为null。
如何工作
在事件OnAfterUserTypeAdd
中添加了处理程序,该处理程序执行ALTER TABLE MODIFY COLUMN
。它仅在添加新属性时执行。更新时无法造成损坏。