Merge pull request #5592 from silverstripe-terraformers/fixes/diff-dbfield-check

Adjusted dbObject order of execution and make ignoreFields chainable
This commit is contained in:
Daniel Hensby 2016-08-01 14:10:24 +01:00 committed by GitHub
commit 59bba54b30
2 changed files with 15 additions and 10 deletions

View File

@ -2954,24 +2954,27 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @return DBField The field as a DBField object
*/
public function dbObject($fieldName) {
// Check for field in DB
$helper = $this->db($fieldName, true);
if(!$helper) {
return null;
}
$value = isset($this->record[$fieldName])
? $this->record[$fieldName]
: null;
// If we have a DBField object in $this->record, then return that
if(is_object($value)) {
if($value instanceof DBField) {
return $value;
}
// Build and populate new field otherwise
$helper = $this->db($fieldName, true);
if($helper) {
list($table, $spec) = explode('.', $helper);
$obj = Object::create_from_string($spec, $fieldName);
$obj->setTable($table);
$obj->setValue($value, $this, false);
return $obj;
}
list($table, $spec) = explode('.', $helper);
$obj = Object::create_from_string($spec, $fieldName);
$obj->setTable($table);
$obj->setValue($value, $this, false);
return $obj;
}
/**

View File

@ -75,6 +75,8 @@ class DataDifferencer extends ViewableData {
public function ignoreFields($ignoredFields) {
if(!is_array($ignoredFields)) $ignoredFields = func_get_args();
$this->ignoredFields = array_merge($this->ignoredFields, $ignoredFields);
return $this;
}
/**