For coders TYPO3 Tech Corner

[PHP] Ein array in ein Extbase Objekt umwandeln

[PHP] Ein array in ein Extbase Objekt umwandeln

public function mapProperties(): AnyModel { $properties = [ 'uid' => 123, 'pid' => 123, 'firstname' => 'Alex', 'lastname' => 'Kellner' 'email' => 'my@email.org' ]; $dataMapper = $this->objectManager->get(TYPO3\CMS\Extbase\Persistence\Generic\Mapper\DataMapper::class); $anyModels = $dataMapper->map(AnyModel::class, [$properties]); return $anyModels[0]; } public function mapPropertiesOld(): AnyModel { $properties = [ 'uid' => 123, 'pid' => 123, 'firstname' => 'Alex', 'lastname' => 'Kellner' 'email' => 'my@email.org' ]; $anyModel = $this->objectManager->get(AnyModel::class); $anyModel->setUid($properties['uid'); $anyModel->setPid($properties['pid'); $anyModel->setFirstname($properties['firstname'); $anyModel->setLastname($properties['lastname'); $anyModel->setEmail($properties['email'); return $anyModel; } public function mapManyRecords(): array { $tableName = 'tx_ext_domain_model_table'; $queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable($tableName); $result = $queryBuilder->select('*')->from($tableName)->setMaxResults(10000)->execute(); $dataMapper = $this->objectManager->get(DataMapper::class); return $dataMapper->map(Table::class, $result->fetchAll()); }

Alternativ kann man mit dem PropertyMapper auch Arrays in Objekte umwandeln, die AbstractEntity nicht erweitern:

$propertyMapper = GeneralUtility::makeInstance(PropertyMapper::class); $object = $propertyMapper->convert($row, Object::class);

Zurück

Kennst du das: Immer nur schnell schnell?

Wie wäre es einmal mit Zeit und Respekt für Codequalität? Arbeiten im Team? Automatisierte Tests?

Komm zu uns