예제 #1
0
 /**
  * @param PerfORM $model
  * @param string $from
  */
 public function renameTable($model, $from)
 {
     if ($model->isTable()) {
         $template = $this->getTemplate('table-rename');
         $template->table = $this->getRenameTable($model, $from);
     } elseif ($model->isView()) {
         $template = $this->getTemplate('view-rename');
         $template->view = $this->getRenameView($model, $from);
     }
     $this->renderToBuffer($template, 'alters');
 }
예제 #2
0
파일: PerfORM.php 프로젝트: Edke/PerfORM
 /**
  * Magic method for getting field's values
  * @param string $name
  * @return mixed
  */
 public function &__get($name)
 {
     $name = strtolower($name);
     if ($this->hasField($name)) {
         if (key_exists($name, $this->fields)) {
             $field = $this->getField($name);
             if ($field->getIdent() == PerfORM::DateTimeField || $field->getIdent() == PerfORM::TimeField || $field->getIdent() == PerfORM::DateField) {
                 return $field;
             } elseif ($field->getIdent() == PerfORM::ForeignKeyField && $field->isEnabledLazyLoading() && !is_null($lazyLoadingKeyValue = $field->getValue())) {
                 $referenceModel = get_class($field->getReference());
                 $model = new $referenceModel();
                 $model->objects()->load('id=%i', $lazyLoadingKeyValue);
                 $field->setValue($model);
                 $field->disableLazyLoading();
             }
             $result = $field->getValue();
             return $result;
         } elseif ($this->isExtended()) {
             $result = $this->extends->__get($name);
             return $result;
         } else {
             throw new Exception('logic exception');
         }
     } else {
         throw new Exception("Model '" . get_class($this) . "' does not contain field '{$name}'.");
     }
 }
예제 #3
0
파일: QuerySet.php 프로젝트: Edke/PerfORM
 /**
  * Getter for datasource
  * @return DibiDataSource
  */
 public function getDataSource()
 {
     if (!$this->dataSource) {
         # build query
         $query = array();
         $query[] = "\nSELECT";
         $this->addFields($this->model);
         $query[] = implode(",\n", $this->fields);
         $query[] = sprintf("FROM \"%s\"", $this->model->getTableName());
         $this->addJoins($this->model);
         $query[] = implode("\n", $this->joins);
         $this->dataSource = new DibiDataSource(implode("\n", $query), PerfORMController::getConnection());
     }
     return $this->dataSource;
 }
예제 #4
0
 /**
  * @param PerfORM $model
  * @param string $from
  * @return stdClass
  */
 public function getRenameView($model, $from)
 {
     return (object) array('view' => $model->getTableName(), 'from' => $from);
 }
예제 #5
0
 /**
  * Update model in storage, sets hashes for it's model
  * @param PerfORM $model
  */
 public function updateModelSync($model)
 {
     $this->query('update [tables] set [hash] = %s where [name] = %s', $model->getHash(), $model->getTableName());
 }