isAttributeChanged('cAktenId')) { return; } $akteId = $entity->get('cAktenId'); if (!$akteId) { return; } $key = $akteId . '-' . $entity->getId() . '-propagate'; if (isset(self::$processing[$key])) { return; } self::$processing[$key] = true; try { $akte = $this->entityManager->getEntity('CAkten', $akteId); if (!$akte) { return; } $raumungsklage = $this->entityManager ->getRDBRepository('CAkten') ->getRelation($akte, 'vmhRumungsklage') ->findOne(); if ($raumungsklage) { $this->relateDocument($raumungsklage, 'dokumentesvmhraumungsklage', $entity); } $mietinkasso = $this->entityManager ->getRDBRepository('CAkten') ->getRelation($akte, 'mietinkasso') ->findOne(); if ($mietinkasso) { $this->relateDocument($mietinkasso, 'dokumentesmietinkasso', $entity); } } catch (\Exception $e) { $GLOBALS['log']->error('CAkten PropagateDocumentsUp Error: ' . $e->getMessage()); } finally { unset(self::$processing[$key]); } } private function relateDocument(Entity $parentEntity, string $relationName, Entity $document): void { $repository = $this->entityManager->getRDBRepository($parentEntity->getEntityType()); $relation = $repository->getRelation($parentEntity, $relationName); $isRelated = $relation ->where(['id' => $document->getId()]) ->findOne(); if (!$isRelated) { $relation->relate($document); } } }