emteknetnz / silverstripe-varchar-polyfill
针对 CMS 5.4 以前的 DBClassNameVarchar 的 Polyfill
1.0.2
2024-09-12 01:18 UTC
Requires
- php: ^7.4 || ^8.1
- silverstripe/framework: ^4 || ^5
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/build
时 ALTER 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
,在大型数据库上这可能需要很长时间。在生产部署时请特别注意这一点。