Example #1
0
 protected function _save()
 {
     if (empty($this->_metadata)) {
         return true;
     }
     foreach ($this->_metadata as $key => $metadata) {
         $metadata = $this->_parseMetadata($metadata);
         if ($this->_model->primary() !== $this->_model->primaryWas()) {
             $metadata['class']::updateAll(array($metadata['foreign_key'] => $this->_model->primary()), array($metadata['foreign_key'] => $this->_model->primaryWas()));
         }
         if (!isset($this->_records[$key]) || !$this->_records[$key] instanceof ModelIterator) {
             continue;
         }
         $modelIterator = new ModelIterator(array(), $metadata['class']);
         foreach ($this->_records[$key] as $record) {
             $record->{$metadata}['foreign_key'] = $this->_model->primary();
             if ($record->isNewRecord()) {
                 $modelIterator->append($metadata['class']::create($record->toArray()));
             } else {
                 $metadata['class']::updateAll(array($metadata['foreign_key'] => $this->_model->primary()), array($metadata['class']::$primaryKey => $record->primaryWas()));
                 $modelIterator->append($metadata['class']::first(array('conditions' => array($metadata['class']::$primaryKey => $record->primaryWas()))));
             }
         }
         $this->_records[$key] = $modelIterator;
     }
     return true;
 }