mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
API Enable default value to be specified for dbstring types at the db level
Fixes #1409
This commit is contained in:
parent
86dd56ba49
commit
e8375111b1
@ -195,6 +195,26 @@ abstract class DBField extends ViewableData {
|
|||||||
$this->value = $value;
|
$this->value = $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get default value assigned at the DB level
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function getDefaultValue() {
|
||||||
|
return $this->defaultVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set default value to use at the DB level
|
||||||
|
*
|
||||||
|
* @param mixed $defaultValue
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function setDefaultValue($defaultValue) {
|
||||||
|
$this->defaultVal = $defaultValue;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determines if the field has a value which is not considered to be 'null'
|
* Determines if the field has a value which is not considered to be 'null'
|
||||||
|
@ -58,6 +58,9 @@ abstract class DBString extends DBField {
|
|||||||
if(array_key_exists("nullifyEmpty", $options)) {
|
if(array_key_exists("nullifyEmpty", $options)) {
|
||||||
$this->nullifyEmpty = $options["nullifyEmpty"] ? true : false;
|
$this->nullifyEmpty = $options["nullifyEmpty"] ? true : false;
|
||||||
}
|
}
|
||||||
|
if(array_key_exists("default", $options)) {
|
||||||
|
$this->setDefaultValue($options["default"]);
|
||||||
|
}
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,13 @@ When adding a new `$db` field to a DataObject you can specify a default value
|
|||||||
to be applied to all existing records when the column is added in the database
|
to be applied to all existing records when the column is added in the database
|
||||||
for the first time. This will also be applied to any newly created objects
|
for the first time. This will also be applied to any newly created objects
|
||||||
going forward. You do this be passing an argument for the default value in your
|
going forward. You do this be passing an argument for the default value in your
|
||||||
`$db` items. For example:
|
`$db` items.
|
||||||
|
|
||||||
|
For integer values, the default is the first parameter in the field specification.
|
||||||
|
For string values, you will need to declare this default using the options array.
|
||||||
|
For enum values, it's the second parameter.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
:::php
|
:::php
|
||||||
<?php
|
<?php
|
||||||
@ -82,7 +88,8 @@ going forward. You do this be passing an argument for the default value in your
|
|||||||
|
|
||||||
private static $db = array(
|
private static $db = array(
|
||||||
'Wheels' => 'Int(4)',
|
'Wheels' => 'Int(4)',
|
||||||
'Condition' => 'Enum(array("New","Fair","Junk"), "New")'
|
'Condition' => 'Enum(array("New","Fair","Junk"), "New")',
|
||||||
|
'Make' => 'Varchar(["default" => "Honda"]),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
use SilverStripe\Core\Object;
|
||||||
use SilverStripe\ORM\FieldType\DBField;
|
use SilverStripe\ORM\FieldType\DBField;
|
||||||
use SilverStripe\ORM\FieldType\DBString;
|
use SilverStripe\ORM\FieldType\DBString;
|
||||||
use SilverStripe\Dev\SapphireTest;
|
use SilverStripe\Dev\SapphireTest;
|
||||||
@ -26,6 +26,18 @@ class DBStringTest extends SapphireTest {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDefault() {
|
||||||
|
/** @var DBString $dbField */
|
||||||
|
$dbField = Object::create_from_string(
|
||||||
|
"StringFieldTest_MyStringField(['default' => 'Here is my default text'])",
|
||||||
|
'Myfield'
|
||||||
|
);
|
||||||
|
$this->assertEquals(
|
||||||
|
"Here is my default text",
|
||||||
|
$dbField->getDefaultValue()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers SilverStripe\Model\FieldType\DBString::LowerCase()
|
* @covers SilverStripe\Model\FieldType\DBString::LowerCase()
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user