diff --git a/application/Espo/Core/ORM/Repository/Option/SaveContext.php b/application/Espo/Core/ORM/Repository/Option/SaveContext.php index 011ccf390e..11ecb1cd99 100644 --- a/application/Espo/Core/ORM/Repository/Option/SaveContext.php +++ b/application/Espo/Core/ORM/Repository/Option/SaveContext.php @@ -29,6 +29,8 @@ namespace Espo\Core\ORM\Repository\Option; +use Espo\Core\Utils\Util; + /** * @since 9.1.0 */ @@ -36,8 +38,22 @@ class SaveContext { public const NAME = 'context'; + private string $id; private bool $linkUpdated = false; + public function __construct() + { + $this->id = Util::generateId(); + } + + /** + * An action ID. + */ + public function getId(): string + { + return $this->id; + } + public function setLinkUpdated(): self { $this->linkUpdated = true; diff --git a/application/Espo/ORM/Repository/RDBRepository.php b/application/Espo/ORM/Repository/RDBRepository.php index 67d73dd492..ddcabf3e84 100644 --- a/application/Espo/ORM/Repository/RDBRepository.php +++ b/application/Espo/ORM/Repository/RDBRepository.php @@ -29,6 +29,7 @@ namespace Espo\ORM\Repository; +use Espo\Core\ORM\Repository\Option\SaveContext; use Espo\ORM\Defs\RelationDefs; use Espo\ORM\EntityCollection; use Espo\ORM\EntityManager; @@ -132,6 +133,10 @@ class RDBRepository implements Repository */ public function save(Entity $entity, array $options = []): void { + if (!isset($options[SaveContext::NAME])) { + $options[SaveContext::NAME] = new SaveContext(); + } + $this->processCheckEntity($entity); if ($entity instanceof BaseEntity) {