mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
Merge pull request #60 from simonwelsh/patch-3
BUGFIX Pass create_table_options for the owner class's table to DB::requireTable()
This commit is contained in:
commit
1c12a226a3
@ -99,6 +99,9 @@ abstract class DataExtension extends Extension {
|
||||
|
||||
/**
|
||||
* Update the database schema as required by this extension.
|
||||
*
|
||||
* When duplicating a table's structure, remember to duplicate the create options
|
||||
* as well. See {@link Versioned->augmentDatabase} for an example.
|
||||
*/
|
||||
function augmentDatabase() {
|
||||
}
|
||||
|
@ -236,6 +236,7 @@ class Versioned extends DataExtension {
|
||||
else $table = $classTable;
|
||||
|
||||
if($fields = DataObject::database_fields($this->owner->class)) {
|
||||
$options = Object::get_static($this->owner->class, 'create_table_options');
|
||||
$indexes = $this->owner->databaseIndexes();
|
||||
if ($suffix && ($ext = $this->owner->getExtensionInstance($allSuffixes[$suffix]))) {
|
||||
if (!$ext->isVersionedTable($table)) continue;
|
||||
@ -257,7 +258,7 @@ class Versioned extends DataExtension {
|
||||
}
|
||||
|
||||
if($stage != $this->defaultStage) {
|
||||
DB::requireTable("{$table}_$stage", $fields, $indexes, false);
|
||||
DB::requireTable("{$table}_$stage", $fields, $indexes, false, $options);
|
||||
}
|
||||
|
||||
// Version fields on each root table (including Stage)
|
||||
@ -359,7 +360,7 @@ class Versioned extends DataExtension {
|
||||
}
|
||||
}
|
||||
|
||||
DB::requireTable("{$table}_versions", $versionFields, $versionIndexes);
|
||||
DB::requireTable("{$table}_versions", $versionFields, $versionIndexes, true, $options);
|
||||
} else {
|
||||
DB::dontRequireTable("{$table}_versions");
|
||||
foreach($this->stages as $stage) {
|
||||
@ -1092,5 +1093,3 @@ class Versioned_Version extends ViewableData {
|
||||
return !empty( $this->record['WasPublished'] );
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
Loading…
Reference in New Issue
Block a user