コード例 #1
0
 public function createDataObject($row)
 {
     // Add joined record
     $joinRow = [];
     $joinAlias = $this->manipulator->getJoinAlias();
     $prefix = $joinAlias . '_';
     foreach ($row as $key => $value) {
         if (strpos($key, $prefix) === 0) {
             $joinKey = substr($key, strlen($prefix));
             $joinRow[$joinKey] = $value;
             unset($row[$key]);
         }
     }
     // Create parent record
     $record = parent::createDataObject($row);
     // Create joined record
     if ($joinRow) {
         $joinClass = $this->manipulator->getJoinClass();
         $joinQueryParams = $this->manipulator->extractInheritableQueryParameters($this->dataQuery);
         $joinRecord = Injector::inst()->create($joinClass, $joinRow, false, $this->model, $joinQueryParams);
         $record->setJoin($joinRecord, $joinAlias);
     }
     return $record;
 }
コード例 #2
0
 /**
  * Create a DataObject from the given SQL row.
  *
  * @param array $row
  * @return DataObject
  */
 protected function createDataObject($row)
 {
     // remove any composed fields
     $add = array();
     if ($this->_compositeExtraFields) {
         foreach ($this->_compositeExtraFields as $fieldName => $composed) {
             // convert joined extra fields into their composite field types.
             $value = array();
             foreach ($composed as $subField) {
                 if (isset($row[$fieldName . $subField])) {
                     $value[$subField] = $row[$fieldName . $subField];
                     // don't duplicate data in the record
                     unset($row[$fieldName . $subField]);
                 }
             }
             $obj = Object::create_from_string($this->extraFields[$fieldName], $fieldName);
             $obj->setValue($value, null, false);
             $add[$fieldName] = $obj;
         }
     }
     $dataObject = parent::createDataObject($row);
     foreach ($add as $fieldName => $obj) {
         $dataObject->{$fieldName} = $obj;
     }
     return $dataObject;
 }