emteknetnz/silverstripe-varchar-polyfill

针对 CMS 5.4 以前的 DBClassNameVarchar 的 Polyfill

安装: 13

依赖: 0

建议者: 0

安全: 0

星星: 0

观察者: 1

分支: 0

开放性问题: 0

类型:silverstripe-vendormodule

1.0.2 2024-09-12 01:18 UTC

This package is auto-updated.

Last update: 2024-09-12 01:20:45 UTC


README

此模块为 DBClassNameVarchar 提供了一个 Polyfill,它不在 silverstripe/framework 5.4.0 之前可用,并在这次 pull-request 中添加。

此模块在 Silverstripe 4 和 5 上工作。

此功能描述如下 这里

当升级到 CMS 6,以及可选的 5.4 时,您应卸载此模块,并使用 silverstripe/framework 中提供的 DBClassNameVarchar 类。

安装

composer require emteknetnz/silverstripe-varchar-polyfill

在安装此模块之前,建议您首先验证在运行 dev/buildALTER TABLE 查询是否是显著的瓶颈。您可以使用 emteknetnz/silverstripe-dev-build-benchark 来帮助解决这个问题。

配置

将以下配置添加到您的项目中以启用 Polyfill

SilverStripe\ORM\DataObject:
  fixed_fields:
    ClassName: DBClassNameVarcharPolyfill

SilverStripe\ORM\FieldType\DBPolymorphicForeignKey:
  composite_db:
    Class: "DBClassNameVarcharPolyfill('SilverStripe\\ORM\\DataObject', ['index' => false])"

警告

更新此配置后,所有必要的 ALTER TABLE 查询都将运行在下一个 dev/build 中,将 ClassName 列从 enum 更改为 varchar,在大型数据库上这可能需要很长时间。在生产部署时请特别注意这一点。