コード例 #1
0
ファイル: ModelBase.php プロジェクト: jivoo/data
 /**
  * {@inheritDoc}
  */
 public function open(array $data, Query\ReadSelection $selection)
 {
     $additional = $selection->getAdditionalFields();
     if (empty($additional)) {
         return RecordBuilder::open($this, $data, []);
     }
     $virtual = array();
     $subrecords = array();
     foreach ($data as $field => $value) {
         if (isset($additional[$field])) {
             if (isset($additional[$field]['record'])) {
                 $record = $additional[$field]['record'];
                 if (!isset($subrecords[$record])) {
                     $subrecords[$record] = ['model' => $additional[$field]['model'], 'null' => true, 'data' => []];
                 }
                 $subrecords[$record]['data'][$additional[$field]['recordField']] = $value;
                 if (isset($value)) {
                     $subrecords[$record]['null'] = false;
                 }
             } else {
                 $virtual[$field] = $value;
             }
             unset($data[$field]);
         }
     }
     foreach ($subrecords as $field => $record) {
         if ($record['null']) {
             $virtual[$field] = null;
         } else {
             $virtual[$field] = RecordBuilder::open($record['model'], $record['data']);
         }
     }
     return RecordBuilder::open($this, $data, $virtual);
 }
コード例 #2
0
ファイル: ActiveModel.php プロジェクト: jivoo/data
 /**
  * Convert a record to an ActiveRecord.
  *
  * @param RecordBuilder $record
  *            Record.
  * @return ActiveRecord Active record.
  */
 public function convert(RecordBuilder $record)
 {
     return ActiveRecord::createExisting($this, $record->getData(), $record->getVirtualData(), $this->record);
 }