*/ class TargetLoader implements LoaderInterface { private EntityManager $entityManager; public function __construct(EntityManager $entityManager) { $this->entityManager = $entityManager; } public function process(Entity $entity, Params $params): void { $targetType = $entity->get('targetType'); $targetId = $entity->get('targetId'); if (!$targetType || !$targetId) { return; } if (!$this->entityManager->hasRepository($targetType)) { return; } $query = $this->entityManager ->getQueryBuilder() ->select() ->from($targetType) ->withDeleted() ->where([ 'id' => $targetId, ]) ->build(); $target = $this->entityManager ->getRDBRepository($targetType) ->clone($query) ->findOne(); if (!$target) { return; } if (!$target->get('name')) { return; } $entity->set('targetName', $target->get('name')); } }