emteknetnz / silverstripe-varchar-polyfill
Polyfill for pre CMS 5.4 for DBClassNameVarchar
Installs: 14
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:silverstripe-vendormodule
pkg:composer/emteknetnz/silverstripe-varchar-polyfill
Requires
- php: ^7.4 || ^8.1
- silverstripe/framework: ^4 || ^5
README
This module provides a polyfill for DBClassNameVarchar which is not available before silverstripe/framework 5.4.0 and was added in this pull-request.
This module works on Silverstripe 4 and 5.
This functionality this provides is described here.
When upgrading to CMS 6, and also optionally 5.4, you should uninstall this module and instead use the DBClassNameVarchar class provided in silverstripe/framework.
Installation
composer require emteknetnz/silverstripe-varchar-polyfill
Before installing this module, it it's recommended that you first validate that ALTER TABLE queries are a significant bottleneck when running dev/build. You can use emteknetnz/silverstripe-dev-build-benchark to help with this.
Configuration
Add the following configuration to your project to enable the polyfill:
SilverStripe\ORM\DataObject: fixed_fields: ClassName: DBClassNameVarcharPolyfill SilverStripe\ORM\FieldType\DBPolymorphicForeignKey: composite_db: Class: "DBClassNameVarcharPolyfill('SilverStripe\\ORM\\DataObject', ['index' => false])"
Warning
After updating this config all necessary ALTER TABLE queries to change ClassName columns from enum to varchar will be run on the next dev/build, which can take a long time on large databases. Keep this in mind in particular when deploying to production.