Skip to content

Commit 3d35f06

Browse files
author
Daria Prusova
committed
[orm] refactoring
1 parent 2e4f8be commit 3d35f06

19 files changed

Lines changed: 248 additions & 1870 deletions

library/orm/collection/BaseCollection.php

Lines changed: 5 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -432,15 +432,10 @@ public function persistModifiedObject(IObject $object)
432432

433433
$updateBuilder = $dataSource->update();
434434

435-
$calculableProperties = [];
436-
foreach ($object->getModifiedProperties() as $property) {
435+
foreach ($modifiedProperties as $property) {
437436
if ($this->getMetadata()->getFieldExists($property->getName())) {
438-
if ($property instanceof ICalculableProperty) {
439-
$calculableProperties[] = $property;
440-
} else {
441-
$field = $this->getMetadata()->getField($property->getName());
442-
$field->persistProperty($object, $property, $updateBuilder);
443-
}
437+
$field = $this->getMetadata()->getField($property->getName());
438+
$field->persistProperty($object, $property, $updateBuilder);
444439
}
445440
}
446441

@@ -463,13 +458,8 @@ public function persistModifiedObject(IObject $object)
463458
$this->getIdentifyField()->getDataType()
464459
);
465460

466-
$updateBuilder->where()
467-
->expr($versionColumnName, '=', ':' . $versionColumnName);
468-
$updateBuilder->bindValue(
469-
':' . $versionColumnName,
470-
$version,
471-
$this->getVersionField()->getDataType()
472-
);
461+
$updateBuilder->where()->expr($versionColumnName, '=', ':' . $versionColumnName);
462+
$updateBuilder->bindValue(':' . $versionColumnName, $version, $this->getVersionField()->getDataType());
473463

474464
$result = $updateBuilder->execute();
475465

@@ -500,8 +490,6 @@ public function persistModifiedObject(IObject $object)
500490
));
501491
}
502492
}
503-
504-
$this->persistCalculableProperties($object, $calculableProperties);
505493
}
506494

507495
/**
@@ -537,54 +525,6 @@ public function persistDeletedObject(IObject $object)
537525
}
538526
}
539527

540-
/**
541-
* Запускает запросы на сохранение вычисляемых свойств объекта.
542-
* @param IObject $object объект, для которого сохраняются значения
543-
* @param IProperty[] $calculableProperties список свойств, которые должны быть вычислены
544-
* @throws RuntimeException если не удалось сохранить свойства
545-
*/
546-
protected function persistCalculableProperties(IObject $object, array $calculableProperties)
547-
{
548-
549-
$updateBuilder = $this->getMetadata()->getCollectionDataSource()->update();
550-
551-
$updateBuilder
552-
->where()
553-
->expr(
554-
$this
555-
->getIdentifyField()
556-
->getColumnName(),
557-
'=',
558-
':objectId'
559-
);
560-
$updateBuilder->bindValue(
561-
':objectId',
562-
$object->getId(),
563-
$this->getIdentifyField()
564-
->getDataType()
565-
);
566-
567-
foreach ($calculableProperties as $property) {
568-
if ($this->getMetadata()->getFieldExists($property->getName())) {
569-
$field = $this->getMetadata()->getField($property->getName());
570-
$field->persistProperty($object, $property, $updateBuilder);
571-
}
572-
}
573-
574-
if (!$updateBuilder->getUpdatePossible()) {
575-
return;
576-
}
577-
$result = $updateBuilder->execute();
578-
579-
if ($result->rowCount() != 1) {
580-
throw new RuntimeException($this->translate(
581-
'Cannot set calculable properties for object with id "{id}" and type "{type}".'
582-
. ' Database row is not modified.',
583-
['id' => $object->getId(), 'type' => $object->getTypePath()]
584-
));
585-
}
586-
}
587-
588528
/**
589529
* Возвращает обязательное поле коллекции.
590530
* @param $fieldName

0 commit comments

Comments
 (0)