arrilot/bitrix-hlblock-fields-fixer

此包已弃用且不再维护。未建议替代包。

0.1.1 2018-04-23 21:20 UTC

This package is auto-updated.

Last update: 2023-01-29 02:51:29 UTC


README

Latest Stable Version Total Downloads

此包不再活跃支持

原因 - 我们不再使用Bitrix进行我们的项目。如果您对这个项目感兴趣并希望支持它 - 分支它并在本存储库中创建一个问题,以便我们将链接放在这里。

修改由highloadblock模块创建的字段

介绍

众所周知,highloadblock模块将元素存储在任意表中,其中每个highload-块的字段代表该表中的一个列。然而,由于历史原因,Bitrix在选择字段类型方面非常奇怪,例如字符串属性存储在类型为text的列中。本包允许重定义任何属性的字段类型,并执行一系列默认的有用转换。

安装

1)composer require arrilot/bitrix-hlblock-fields-fixer

  1. 添加到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。它仅在添加新属性时执行。更新时无法造成损坏。