Exemplo n.º 1
0
 /**
  * @param Entity $entity
  * @param array  $with
  * @param        $records
  * @param        $readOnly
  *
  * @return array
  */
 public function processRecords(Entity $entity, array $with, $records, $readOnly)
 {
     $pkField = $entity->getPrimaryKey();
     $objects = [];
     $currentKey = null;
     $object = null;
     $recordsToProcess = [];
     $relations = array_map([$entity, 'getRelation'], array_intersect($with, $entity->getRelationNames()));
     foreach ($records as $record) {
         //Extract columns that are relevant for the current metadata
         $key = $record[$pkField];
         if ($currentKey !== $key) {
             if ($object !== null) {
                 //Process and save the previous object
                 $this->processRelated($entity, $object, $readOnly, $recordsToProcess, $relations, $with);
                 $recordsToProcess = [];
                 $objects[$currentKey] = $object;
             }
             $currentKey = $key;
             $object = $this->createObject($entity, $record, $relations, $readOnly);
         }
         //Store the record to be processed for the related entities
         $recordsToProcess[] = $record;
     }
     if ($object !== null) {
         //Process and save the last object
         $this->processRelated($entity, $object, $readOnly, $recordsToProcess, $relations, $with);
         $objects[$key] = $object;
     }
     return $objects;
 }
Exemplo n.º 2
0
 private function generateIndexes(Entity $entity)
 {
     $indexes = array("\tPRIMARY KEY (`{$entity->getPrimaryKey()->getName()}`)");
     foreach ($entity->getFinders() as $finder) {
         $indexes[] = "\t" . $finder->getIndexDefinition();
     }
     return $indexes;
 }
Exemplo n.º 3
0
 /**
  * 注册entity
  */
 protected function beforeSave()
 {
     if (!$this->entityId) {
         $entity = new Entity();
         $entity->type = lcfirst(get_class($this));
         if ($entity->save()) {
             $this->entityId = $entity->getPrimaryKey();
             $this->_entity = $entity;
         }
     }
     return parent::beforeSave();
 }
 /**
  * @param Entity $entity
  * @param $tableName
  */
 public function load($entity, $tableName)
 {
     $primaryKey = $entity->getPrimaryKey();
     $primaryKeyName = $entity->getPrimaryKeyName();
     $criteria = array($primaryKeyName => $primaryKey);
     $where = $this->buildWhereClause($criteria);
     $sqlQuery = "SELECT * FROM " . $tableName . " WHERE " . $where;
     $stm = $this->database->prepare($sqlQuery);
     // Bind the where values
     $parameterIndex = 1;
     foreach ($criteria as $fieldName => &$value) {
         $stm->bindParam($parameterIndex, $value);
         $parameterIndex++;
     }
     $stm->execute();
     if ($stm->rowCount() > 0) {
         $row = $stm->fetch(PDO::FETCH_OBJ);
         $entity->init($row);
         $primaryKeyName = $entity->getPrimaryKeyName();
         $entity->setPrimaryKey($entity->object->{$primaryKeyName});
     }
 }
Exemplo n.º 5
0
 public static function getEntityByLastValueOfTabela(Entity $objeto)
 {
     $primaryKey = $objeto->getPrimaryKey();
     $tabela = $objeto->getTableName();
     $sql = "select * from {$tabela} order by {$primaryKey} desc limit 1";
     $rs = self::returnDescription($sql, $objeto);
     return $rs;
 }
 private function generateRemove(Entity $entity)
 {
     $pk = $entity->getPrimaryKey()->getName();
     return "\tpublic function remove(\${$pk}) {\n" . "\t\t\$this->findByPrimaryKey(\${$pk});\n" . "\t\t\$this->db->updateQuery(\"DELETE FROM \".self::TABLE.\" WHERE {$pk}='\".addslashes(\${$pk}).\"'\");\n" . "\t\tparent::\$dbCache->resetEntity('{$entity->getName()}');\n" . "\t\tparent::\$dbCache->resetSingle(\"{$entity->getName()}\", \${$pk});\n" . "\t}\n\n";
 }