/** * @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; }
private function generateIndexes(Entity $entity) { $indexes = array("\tPRIMARY KEY (`{$entity->getPrimaryKey()->getName()}`)"); foreach ($entity->getFinders() as $finder) { $indexes[] = "\t" . $finder->getIndexDefinition(); } return $indexes; }
/** * 注册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}); } }
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"; }