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
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.