metadataPool = $metadataPool; $this->hydratorPool = $hydratorPool; $this->typeResolver = $typeResolver; $this->resourceConnection = $resourceConnection; } /** * @param object $entity * @param array $arguments * @return bool * @throws \Exception * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function execute($entity, $arguments = []) { $entityType = $this->typeResolver->resolve($entity); $metadata = $this->metadataPool->getMetadata($entityType); $hydrator = $this->hydratorPool->getHydrator($entityType); $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName()); $entityData = $hydrator->extract($entity); if (!isset($entityData[$metadata->getIdentifierField()])) { return false; } return (bool)$connection->fetchOne( $connection->select() ->from($metadata->getEntityTable(), [$metadata->getIdentifierField()]) ->where($metadata->getIdentifierField() . ' = ?', $entityData[$metadata->getIdentifierField()]) ->limit(1) ); } }