示例#1
0
文件: PerfORM.php 项目: Edke/PerfORM
 /**
  * Fill model with values from result
  * @param PerfORM $model
  * @param array $values
  * @result PerfORM
  */
 public function fill($values)
 {
     if ($values === false) {
         return;
     }
     foreach ($this->getFields() as $field) {
         $key = $this->getAlias() . '__' . $field->getRealName();
         if ($field->getIdent() == PerfORM::ForeignKeyField && !key_exists($field->getReference()->getAlias() . '__' . $field->getReference()->getPrimaryKey(), $values)) {
             $field->setLazyLoadingKeyValue($values[$key]);
             $field->enableLazyLoading();
         } elseif ($field->getIdent() == PerfORM::ForeignKeyField && !$field->isEnabledLazyLoading()) {
             $child = clone $field->getReference();
             $child->fill($values);
             $field->setValue($child);
         } elseif ($field->getIdent() == PerfORM::ForeignKeyField && $field->isEnabledLazyLoading()) {
             $field->setLazyLoadingKeyValue($values[$key]);
         } elseif (key_exists($key, $values)) {
             $this->__set($field->getName(), $values[$key]);
         } else {
             Debug::barDump($this);
             throw new Exception("The is no value in result for field '{$key}'");
         }
     }
     $this->setUnmodified();
     if ($this->isExtended()) {
         $this->extends->fill($values);
     }
 }