mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
DataDifferencer ignoreFields chainable, adjusted dbObject to check that the field is a db field
This commit is contained in:
parent
e0a51bfb02
commit
333f27badd
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user