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。如果您对这个项目感兴趣并想支持它 - 分支它并在该存储库中创建一个Issue,以便我们在这里放置分支的链接。
修改由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 - 字符串 string_formatted - 模板 text - 字符串/模板,如果创建时在“输入字段行数”中指定了多于1。
可以通过配置数组添加额外的或覆盖现有的转换
Arrilot\BitrixHLBlockFieldsFixer\ServiceProvider::register(['text' => 'longtext']);
此行仅涉及text字段的转换,其他默认转换将继续工作。要关闭某个转换,可以将其设置为null。
工作原理
在事件OnAfterUserTypeAdd
中添加了一个处理程序,该处理程序执行ALTER TABLE MODIFY COLUMN
。它仅在添加新属性时执行。在更新时,不可能损坏任何内容。