/**
  * get value of a single composite field
  *
  * @param string $field
  * @return mixed
  */
 public function getField($field)
 {
     // Skip invalid fields
     $fields = $this->compositeDatabaseFields();
     if (!isset($fields[$field])) {
         return null;
     }
     // Check bound object
     if ($this->record instanceof DataObject) {
         $key = $this->getName() . $field;
         return $this->record->getField($key);
     }
     // Check local record
     if (isset($this->record[$field])) {
         return $this->record[$field];
     }
     return null;
 }
 /**
  * Get the list of extra data from the $record as saved into it by
  * {@see Form::saveInto()}
  *
  * Handles detection of falsey values explicitly saved into the
  * DataObject by formfields
  *
  * @param DataObject $record
  * @param SS_List $list
  * @return array List of data to write to the relation
  */
 protected function getExtraSavedData($record, $list)
 {
     // Skip extra data if not ManyManyList
     if (!$list instanceof ManyManyList) {
         return null;
     }
     $data = array();
     foreach ($list->getExtraFields() as $field => $dbSpec) {
         $savedField = "ManyMany[{$field}]";
         if ($record->hasField($savedField)) {
             $data[$field] = $record->getField($savedField);
         }
     }
     return $data;
 }